【发布时间】:2014-08-24 07:43:51
【问题描述】:
我使用 Nginx 作为网络服务器,并希望实现浏览器缓存方法,以便用户在本地保留静态未更改文件的副本并仅下载更改的文件。其中一个建议是使用文件时间戳来找出更改的文件并仅刷新它们,但这在我的情况下是不可能的,因为在每次新部署之后,都会创建整个 Web 应用程序的新版本并且所有文件的时间戳改变。
我对 ETag 标头进行了一些研究,这似乎是一个不错的解决方案,但我发现 Nginx 尚未正式支持 Etag。
有没有办法在 Nginx 上实现 Etags 或任何替代解决方案?
【问题讨论】:
-
如果您使用
gzip off;行禁用gzip,您可以在回复中看到etag标头。 -
记住,nginx使用文件的最后修改日期和文件大小来生成etag。
-
如果您看到来自安全扫描程序(Nikto 等)的有关 etag 泄漏 inode 的投诉,如果您正在运行 nginx,则可能是误报,因为 nginx does not include inodes in etags。它可以在 apache 中禁用,尽管默认情况下 apache 确实会泄漏 inode(请参阅
FileETag指令)。
标签: nginx browser-cache etag