Safari 审查元素 网络 里大小和已传输

大家好

第一次在这里提问,我用的是Mac OS 10.11.6,最新版Safari,遇到个问题请知晓的朋友解答,谢谢。


操作步骤:Safari,打开网站,右键点击选择审查元素,选择网络,刷新页面(cmd+R),重新加载页面。里面有大小和已传输两个列。


问题:这个已传输是什么意思?比如一个图片是100KB,已传输50KB,是不是经过了Gzip压缩呢?



我有两个网站achair.cn和www.jianzhan1.cn,同一台服务器,


前者的“已传输”与“大小”几乎相同,后者的“已传输”比“大小”小很多。


如图

用户上传的文件用户上传的文件

发布日期 2017年3月30日 下午9:50

回复
回复量: 10

2017年4月1日 下午6:31 回应 achair

"已传输"就是实际传输大小,参见我下面的截图的Transferred,而“大小”就是文件原始大小, Size。


之所以"已传输"会比“大小”小的原因是:

在客户端与网站“握手”的时候,客户端(Safari)会告诉网站服务器,它是否支持压缩传输,如果服务器端设置了压缩,而且客户端支持压缩,那么服务器端会根据本身的配 置情况(某些文件类型压缩等等设置),可能将文件压缩后再传输,客户端接收到的数据,它通过解释Content-encoding得知,传过来的是否经过压缩的数据,如果 是,就先解压后再渲染为用户可视的部分。

一般来说,压缩后的数据都会比原始数据小,所以Transferred看上去比Size要小的情况。


经上面的解释,到底是否压缩传输,要依据客户端和服务器端配置,现代的Web服务器都支持压缩,比如Apache和IIS等等。


比如我的下图,当你选定某个小的项目后,点击箭头的按钮,会出现右边的视窗,在Headers里面的Content-encoding,就标识着文件的传输是否经过压缩, 见下图,示例中是gzip压缩的:

用户上传的文件

2017年4月2日 下午9:40 回应 achair

客户端和服务器端双方经过握手后,服务器端针对客户端的能力以及自己的设定,决定如何传送文件给客户端,客户端在其中的作用只是提供:我可以接受是什么样的信息(这在每次 握手时是相同的),而无法决定服务器给它什么。所以,纠结于与客户端的能力,还不如在服务器端看log来得更有助于问题的解决。


单单依赖于所显示的已传输字节数,不如详细查看request和response header的具体参数。我的举例中,虽然字节数不尽相同,但是从你的服务器端所接受的文件是同一个文件,这说明客户端计算大小的方式不尽相同。是否是压缩传输,看he ader中的content-coding和实际传输文件。还涉及服务器端的配置,是否使用预压缩,是否页面缓存等等。


还有就是缓存的问题,是否使用忽略缓存刷新(Reload ignore cache),也是一个影响传输的因素。

2017年4月3日 下午9:34 回应 tonyfromcalgary

谢谢您更深的解答。

我有两个网站都是WordPress的,但是主题不同,都用的七牛CDN,而且这些css和js都在CDN上,也就是CDN上的Gzip。

A网站:网页加载的css文件,和此css单独加载,都压缩为30%左右。

B网站:网页加载的css文件压缩30%,但此css单独加载,未压缩。


我用Chrome,360,火狐都经过上面单文件测试,结果一样,都是压缩成30%。

唯独Safari有这种gzip兼容不好的情况。我判断Safari的Gzip很挑剔。

2017年3月30日 下午11:54 回应 achair

大小的不一样,我觉得可能是浏览器对于 Transfer-Encoding:chunked 的解释不同造成的。

在Safari和Google Chrome比较中,没有chunked两个css文件,显示的传输大小一样,而只有两个大的css文件文件,在Chrome中的Response Headers显示是chunked,而在Safari中没有这一部分。

他们两个使用的Webkit版本的确也不一样。

这个主题已被系统或社区团队关闭。 你可以为你认为有帮助的任何帖子投票,也可以在社区中搜索其他答案。

Safari 审查元素 网络 里大小和已传输

欢迎来到 Apple 支持社区
Apple 客户在其产品方面互相帮助的论坛。使用您的 Apple 帐户开始畅游其中吧!!