2017-01-27 58 views
1

對於像過去56年我設計我的所有互聯網項目,使所有喜歡JavaScript文件前端的資源獲取儘可能少地從服務器瀏覽器不更新緩存(JavaScript文件)

所以我在網絡服務器上使用了expires標題,並且使用期限爲1年。在前端我在查詢字符串這樣

<script src="my_js_file.js?v=323"></script> 

但最近我已經經歷了古爾的Chrome變得更嚴格的關於它添加的版本,所以你必須清除瀏覽器緩存更新JavaScript文件如果你不改變查詢字符串的版本,如?v=4939。但有時看起來它不會一直更新緩存,即使版本被添加了一個

這是一個錯誤在鉻或新的「功能」,使互聯網「更快」?如果是,這是一個狗屎功能,它不會讓你控制你的網站的版本了

更新

這不是我的問題而開發的網站,但該網站的用戶。當新版本發佈時,緩存沒有更新

+0

在手機上,有一個「節省帶寬」選項,其中網站代理處理(我們需要一個更好的詞),所以你得到一個緩存版本的網站,可能是比原來更新少。在桌面上,一遍又一遍地更新同一網站確實會做類似的事情,使用隱身檢查進行檢查,並且您應該獲得新的緩存。 – LordNeo

+0

也devtools->網絡啓用「禁用緩存」功能,如果您正在開發網站或在開發網站時禁用服務器上的過期標題。 – LordNeo

+0

只是爲了清楚起見,Web服務器和客戶端之間是否有像清漆一樣的任何服務?因爲這些類型的服務可以處理導致此類問題的較老版本的html文件。 – joaumg

回答

0

因爲有些瀏覽器不承認改變查詢字符串作爲一個新的文件,不喜歡這樣,而不是

<script src="my_js_file.3.2.3.js"></script> 
+0

這會更新css和js文件嗎? – clarkk

+0

@clarkk沒有...對不起,我的壞,更新...是從我自己的代碼複製,並錯誤地採取了CSS鏈接 – LGSon

0

在最近的版本中,Chrome確實已經更積極地緩存了。

devtools開放,刷新工作,因爲它曾經(幾次清除)。鉻似乎記得所有與devtools關閉。

0

出於測試/調試的目的,CTRL+F5迫使「硬刷新」,它會清除緩存。爲了您的用戶,您需要像@LGSon所說的那樣更改版本號,但這對調試來說是一個巨大的麻煩。

+1

它對我來說不是一個問題,但對網站的用戶 – clarkk

+0

對不起,我讀錯了。只需執行版本號,因爲每個版本只需要這個版本。多麼痛苦...... – SeanKendle