我听说像CSS和JavaScript这样的静态内容可以更好地以GZip格式传递。 内容开发者networking(CDN)总是这样做。
但是我不明白这个格式是如何工作的。 首先当我尝试通过命令行制作一个gzip文件。 文件扩展名是.gz 。 这与.css和.js不同。 浏览器如何识别哪个文件被压缩或不压缩。
其次,浏览器如何“解压缩”文件? 我把我的index.html.gz拖到我的浏览器上。 但没有人工作。
你所讨论的gzip对于最终用户是不可见的,对于这个问题,作为一个开发者你是不可见的。 它由您的Web服务器和客户端的Web浏览器来处理。
对于IIS,您需要启用GZip ISAPI扩展(查看本站的操作方法),而对于Apache则是mod_deflate。
当网页浏览器完成了它的请求之后,在发送到广泛的世界之前,它将gzip内容并且放入一个特殊的头部,以便浏览器知道内容被压缩。
当networking浏览器收到响应后,解压缩数据并读取文件。 这对最终用户是完全透明的。
你通常只想在文本文件上使用GZip。 在图像上使用它没有意义,因为图像已经被压缩了。
当在所有静态内容(CSS,Javascript等)上启用GZip时,我注意到从90Kb页面大小(加载时间约1秒)到约5Kb页面大小(加载时间,0.4秒)的下降。
如果你使用Wireshark观察数据包并重新组装它们,你会发现你会发现/index.html ,但是networking服务器会获取/index.html ,把它解压到/index.html.gz并发送出去。 嘿networking浏览器知道这一点,并解压缩它,所以它回到/index.html ,所以当你去查看源你看到/index.html ,而不是/index.html.gz
通常,通过Apache mod_deflate完成对来自Web服务器的静态内容的Gzip压缩
http://httpd.apache.org/docs/2.0/mod/mod_deflate.html
这通常只用text / plain,text / html和text / xml格式的文本文件完成,可以用其他纯文本内容types(css,js等)来完成,但这可能会导致早期版本的Internet探险家。 (编辑:aparrently v6及以下)
图像应该已经以它们存储的格式进行压缩,所以应该没有额外的(即mod_deflate)压缩应用于这些。