WordPress启用css / js文件的浏览器缓存,同时保留查询字符串

时间:2017-10-19 17:42:15

标签: css wordpress google-chrome caching

希望尽可能在浏览器中缓存WordPress中的css / js文件(以加快加载速度)。但是,如果显然存在查询字符串,(至少Chrome)将不会缓存。但是将版本放在查询字符串中是非常有用的,除了WordPress代码中的css文件和其他模块,例如tinymce,我没有控制权(它们都使用版本查询字符串)。有没有办法可以缓存文件?

enter image description here

1 个答案:

答案 0 :(得分:2)

您的文件可能会在源和用户之间缓存很多地方。浏览器只是其中之一。

避免查询字符串参数的建议是基于许多流行的缓存服务器,如果存在查询字符串则不缓存。我们正在讨论位于Web服务器前面的服务器。 (有些像Cloudflare一样让你选择处理查询字符串的方式)。

总体而言,如果您发送相应的标头,浏览器仍会缓存具有查询字符串的资源。

实现两全其美的常用方法是实际名称的版本:

script-3.4.2.js

这为您提供了没有查询字符串的版本控制,使您无法使用缓存技术。

Chrome会缓存

如果您是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

当您导航到引用该脚本的另一个页面时(即,您无法通过直接加载文件来测试此操作,因为浏览器的行为方式不同)...它会从缓存中加载它:

Chrome Caches URIs with a Query String

如果您发现它没有缓存,请仔细检查与文件一起发送的标头,因为它们比查询字符串更容易出问题。