【问题标题】:Cache GZIPed content with nginx使用 nginx 缓存 GZIPed 内容
【发布时间】:2018-06-13 16:27:12
【问题描述】:

我想知道 nginx 是否可以将 gzip 压缩的内容保存在缓存中,还是一直 gzip 文件?

“保留在缓存中”是指内存或磁盘中的某些内容,在服务器端(无浏览器缓存)。

因为我发现静态压缩(启用sendfile)和使用 nginx gzip 模块(无法使用sendfile)之间存在巨大差异。

【问题讨论】:

标签: nginx


【解决方案1】:

据我所知,Nginx 不会将 gzip 压缩的内容保存在内存中 - 在大多数情况下管理这样的缓存可能会使其更慢和更复杂,并且无助于 99% 的用例,因为 gzip 的开销通常很低.

我建议改用gzip_static - 如果启用它,Nginx 会查找带有附加 .gz 结尾的请求文件并提供此文件而不是 gzip 本身,因此如果有人请求 bigfile.png 并且 Nginx 看到有 bigfile .png.gz 也是,它将 .gz 文件作为 gzip 提供,并且本身不进行计算。我将它用于所有可以提前准备好的资源(JS、CSS、图像、XML)。因为你只gzip一次,所以你也可以使用最高的压缩比。

【讨论】:

  • 我也是这么认为的,但想知道为什么这么多 Nginx 配置示例从来没有提到这一点。尤其是那些混合了sendfilegzip的。
  • 我认为他们没有提到它,因为 Nginx 通常对它正在做的事情非常明确 - 它不会试图猜测,它会尝试快速做所有事情,所以它从不做任何额外的事情场景。这通常很容易理解,因为您不会因出人意料的行为而措手不及。较新版本的 Nginx 有很多显式缓存功能,但缓存总是很难(缓存什么,多长时间,如何找出是否有变化)并且有开销。而且无论如何都很难让 Nginx 变慢:即使“未优化”,大多数东西也运行得很好。
  • 如果启用 sendfilegzip ,sendfile 将不起作用。这不是明确的。
猜你喜欢
  • 2015-05-29
  • 1970-01-01
  • 2020-09-17
  • 2012-10-25
  • 2011-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-28
相关资源
最近更新 更多