在完成更新后,我经常更新我的网站,我的客户报告说正在加载旧图像和脚本而不是新的。我知道它们来自浏览器缓存,但是有什么方法可以强制脚本不要从服务器的缓存中加载。
我正在使用带有 php-fpm 的 nginx。
您可以强制 HTTP 标头影响浏览器缓存行为,但是在您想要缓存的生产环境中,这可能不是一个好主意。
所以只需使用类似的东西:
expires -1
强制Cache-Control no-cache
标头
在这里查看更多信息:
http://wiki.nginx.org/HttpHeadersModule
话虽如此,我已经养成了在修改图像和静态文件名称时更改它们的习惯。也许这来自与 CDN 的合作,这可能会非常有帮助。所以假设我有可能经常更新的静态文件(即它们不是某些特定内容的一部分)。我会这样命名它们:
someimagev1.jpg
someimagev2.jpg
somejs1.js
somejs2.js
etc.
我根据需要更改值(和 HTML 源代码中的链接)。