希望尽可能在浏览器中缓存WordPress中的css / js文件(以加快加载速度)。但是,如果显然存在查询字符串,(至少Chrome)将不会缓存。但是将版本放在查询字符串中是非常有用的,除了WordPress代码中的css文件和其他模块,例如tinymce,我没有控制权(它们都使用版本查询字符串)。有没有办法可以缓存文件?
答案 0 :(得分:2)
您的文件可能会在源和用户之间缓存很多地方。浏览器只是其中之一。
避免查询字符串参数的建议是基于许多流行的缓存服务器,如果存在查询字符串则不缓存。我们正在讨论位于Web服务器前面的服务器。 (有些像Cloudflare一样让你选择处理查询字符串的方式)。
总体而言,如果您发送相应的标头,浏览器仍会缓存具有查询字符串的资源。
实现两全其美的常用方法是实际名称的版本:
script-3.4.2.js
这为您提供了没有查询字符串的版本控制,使您无法使用缓存技术。
如果您是WordPress用户,则可能会从以下位置加载脚本:
https://www.example.com/wp-includes/js/wp-embed.min.js?ver=4.8.2
与所有脚本一样,您必须在第一次加载时获得它。但它应该有某种形式的缓存控制头。
cache-control:public, max-age=172800
content-encoding:gzip
content-type:text/javascript
date:Thu, 19 Oct 2017 18:26:18 GMT
etag:W/"576-543356dcbb9ba"
expires:Sat, 21 Oct 2017 18:26:18 GMT
last-modified:Fri, 09 Dec 2016 08:20:37 GMT
status:200
vary:Accept-Encoding
当您导航到引用该脚本的另一个页面时(即,您无法通过直接加载文件来测试此操作,因为浏览器的行为方式不同)...它会从缓存中加载它:
如果您发现它没有缓存,请仔细检查与文件一起发送的标头,因为它们比查询字符串更容易出问题。