2011-01-12 51 views
21

我正在爲一個網站使用JavaScript,使用Firefox進行開發,當我刷新頁面時,我沒有看到我的更改。 JavaScript文件位於外部文件中。我重新加載並刷新了多次頁面,但舊的JavaScript文件仍被緩存。最後,我直接在瀏覽器中加載JavaScript頁面,看到舊腳本,點擊「重新加載」,並看到我的更改。清除緩存JavaScript包括在Firefox中

如何清除緩存的外部JavaScript文件?當我告訴客戶端所做的更改時,我也需要知道這一點,以便他們沒有看到舊的緩存功能。

回答

14

在Firefox中,你可以安裝一個叫做網頁開發工具插件,它有一個appcache clear命令

我覺得沒有辦法做到這一點編程,但你可以使用類似

給予提示瀏覽器
<script type="text/javascript" src='js/my.js?x=<?php echo rand(0,100) ?>'></script> 
+3

當我想讓所有當前用戶獲得新內容時,我有時也會使用它。不過,我建議使用`filemtime('js/my.js')`而不是隨機值。 – Thai 2011-01-12 16:09:08

9

瀏覽器擁有面向用戶的設施來清除緩存。通常這是一個菜單選項。您無法強制清除緩存。

可以要做的就是安排什麼從,根據版本號(或其他)改變URL加載腳本:

<script src='http://your.site.com/js/big_script.js?version=2'></script> 

現在,當你更新代碼,您更新的頁面使用它:

<script src='http://your.site.com/js/big_script.js?version=3'></script> 

這是一個不同的URL,它不會在緩存中。

+0

+1對於一個解決方案,讓您的最終用戶也得到過時的Javascript。 – hangtwenty 2012-11-02 14:44:41

6

一個非常流行的技術是使用查詢字符串參數。可能看起來像

<script src="http://www.somedomain.com/foobar.js?v=1></script> 

如果更改此行成v=2瀏覽器將刷新腳本,如果它之前緩存。

1

Shift-reload通常更積極地清除緩存。但是,你真的不想依賴這個。一種很好的技術是對外部Javascript的文件名進行版本化,並在轉換時更新引用它們的HTML。這樣,您可以更好地依賴緩存(例如,在您的Web服務器中將緩存標頭設置爲「public」,並指定長Expires時間)。

13

要在Firefox旁路緩存一次:

  • 按住轉變鍵點擊刷新按鈕。
  • 按Ctrl + F5
  • 按Ctrl ++[R或者Cmd的+ + [R
  • for other browsers

有些網站託管服務緩存頁面服務器端。繞過緩存時,Web瀏覽器會發送一個標頭來告訴服務器它不應該使用緩存數據進行響應。