2017-10-19 71 views
1

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

enter image description here

回答

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

如果您发现它不是缓存,请仔细检查与该文件一起发送的标头,因为它们比查询字符串更可能是问题。

+0

谢谢。由于某些文件不在我的控制范围内,因此更改文件名对我来说不是一种选择。即使查询字符串存在,是否有办法让浏览器(至少Chrome)缓存?不使用任何托管服务,没有CDN对中间的服务器不那么担心。 – srvy

+0

启动您的网络选项卡并导航几页。我敢打赌,你会看到从Chrome缓存中加载的文件。 – Fenton

+0

是的,但不是查询字符串。对于那些没有,我确实看到“从磁盘缓存” – srvy