Apache是​​否缓存静态文件的gzip压缩版本?

cal*_*lum 8 compression apache performance gzip

如果您配置Apache以为您的静态HTML/CSS/JS /等启用gzip压缩.文件,它会自动将gzip压缩版本输出到任何发送适当Accept-Encoding请求标头的客户端.(对于其他客户端,它只发送原始未压缩文件.)

我的问题是:每次接受gzip的客户端请求时,Apache都会重新压缩原始文件吗?或者它是否缓存gzipped副本,只有在注意到文件的最后修改时间发生变化时才重新压缩它?

如果它确实缓存了文件的gzip压缩副本,那么这个缓存存储在哪里?

Jam*_*ams 0

Apache 不保留任何缓存文件。它只保留您告诉它保留的文件。以下是压缩的工作原理:

  1. 浏览器请求页面并声明它接受压缩
  2. 服务器找到页面并读取请求的标头。
  3. 服务器将页面发送到浏览器(如果在标头请求中声明接受,则进行压缩 - 压缩文件存储在内存/临时文件夹中)
  4. 浏览器接收信息并显示(如果压缩则解压后)。然后浏览器缓存页面和图像。
  5. 服务器从内存/临时文件夹中删除压缩文件的任何提示,以便为下一个请求释放空间。它确实会在 access_log 中记录事务。

浏览器再次请求相同的文件或页面时。它向服务器发送请求,声明它接受压缩、当前文件和修改日期。从这里,服务器将响应它们是相同的并且不发送附加信息,或者仅根据修改日期发送更改的文件。