网页内容如何转移?

我听说像CSS和JavaScript这样的静态内容可以更好地以GZip格式传递。 内容开发者networking(CDN)总是这样做。

但是我不明白这个格式是如何工作的。 首先当我尝试通过命令行制作一个gzip文件。 文件扩展名是.gz 。 这与.css.js不同。 浏览器如何识别哪个文件被压缩或不压缩。

其次,浏览器如何“解压缩”文件? 我把我的index.html.gz拖到我的浏览器上。 但没有人工作。

  • 在现实世界中如何进行gzip工作?
  • 如果我想使用Gzip格式提供CSS / JavaScript,我需要做些什么。

你所讨论的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)压缩应用于这些。