2017-10-19 72 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