2013-01-01 44 views
12

我認爲這是因爲緩存,但我不完全確定。如何在Chrome中測試時禁用HTML緩存?

我遇到的問題是,當我更改文件並保存它時,它在我的瀏覽器中不會更新一段時間。我認爲這是因爲該文件已緩存在我的瀏覽器中,並且正在加載以前的版本。由於我正在測試,我需要弄清楚如何禁用它,因爲我會經常更改文件。

試圖在網上搜索這個,但無法真正找到我在找什麼。

我在本地主機上當前正在運行的這一點,但變化的文件僅僅是HTML

編輯:

我知道這是不是我的文件有問題,因爲如果我在一個新的瀏覽器中打開它會加載新版本的頁面。

我想用鉻來做我的測試。

EDIT2:

此外,正在更改的文件通過require.js加載的,所以它不是在URL

+0

您運行的是哪種瀏覽器? –

+0

如果是緩存問題,那麼你的答案在那裏:http://stackoverflow.com/questions/1341089/using-meta-tags-to-turn-off-caching-in-all-browsers – SaidbakR

+0

目前使用鉻 –

回答

6

我的選擇你在EDIT2中提到你在使用require.js。如果您不想禁用瀏覽器緩存,則可以設置RequireJS config urlArgs選項。 Require.js有一個配置選項,可以用來禁用正在緩存的文件。

下面是從Require.js documenation一個exerpt:Require.js urlArgs

urlArgs:追加到RequireJS 用來獲取資源的URL額外的查詢字符串參數。當瀏覽器或 服務器配置不正確時,最有用的緩存方式。示例緩存胸圍設置爲

urlArgs:urlArgs:「bust =」+(new Date())。getTime()

在開發過程中使用它可能很有用,但是請確保在部署代碼之前將其刪除。

下面是什麼它可能看起來像一個例子:

requirejs.config({ 
    urlArgs: "bust=" + (new Date()).getTime(), 
    paths: { 
     "jquery": "libs/jquery-1.8.3", 
     "underscore": "libs/underscore", 
     "backbone": "libs/backbone" 
    }, 
}); 

require(["jquery", "underscore", "backbone"], 
    function ($, _, Backbone) { 
     console.log("Test output"); 
     console.log("$: " + typeof $); 
     console.log("_: " + typeof _); 
     console.log("Backbone: " + typeof Backbone); 
    } 
); 
+0

同樣的問題,明智的修復!謝謝!! – film42

1

我做什麼,當我有這種疑惑的是輸入的直接文件在網址的末尾添加一個隨機參數。

例如:

http://localhost/foo/bar.html?randomParam=873738424 

這樣就關閉了瀏覽器緩存響應的可能性。這可以手動或以編程方式完成,因爲它是一個非常簡單的解決方案。

如果存在無法識別的參數,通常應用程序不會出錯。

+0

啊這是有道理的..這可能是更多我在找什麼,因爲我不必更改文件中的任何代碼。謝謝! –

+0

其實,檢查edit2。我認爲這個解決方案不適合我。 –

+0

在開始測試之前,您仍然可以使用隨機參數在瀏覽器中將require js的url強制重新加載。否則,您需要一些可以禁用緩存的firefox/chrome插件(如WebDeveloper插件),請參閱:http://chrispederick.com/work/web-developer/。此外,CTRL + F5或CTRL + R應重新加載禁用大多數瀏覽器緩存的頁面。 –

0

包括在頭部分

<meta http-equiv="Expires" CONTENT="0"> 
<meta http-equiv="Cache-Control" CONTENT="no-cache"> 
<meta http-equiv="Pragma" CONTENT="no-cache"> 
0

嘗試重新加載頁面(Ctrl + Shift +刪除)之前清除瀏覽器的緩存。

您也可以按Shift鍵並單擊重新加載,以便刷新文件並且不使用緩存。

7

如果你打開Chrome開發者工具和命中的設置按鈕(在開發者工具面板的右下角齒輪圖標)應就彈出來「禁用緩存」

+0

值得注意的是,該設置僅適用於開發人員工具針對給定選項卡打開的情況。 – Waxen

+0

我不再看到齒輪按鈕。下面是另一種方法:http://stackoverflow.com/a/36339076/3347858 –

0

否認:似乎功能不會r.js.編譯時被允許:(

小豬背襯上BarDev,怎麼是這樣的:。

requirejs.config({ 
    urlArgs: (function(){ 
     return (location.host=='localhost') ? 'bust='+(new Date().getTime()) : ''; 
    }()) 
}); 

現在你可以離開這個代碼在那裏,從來不擔心無意中破壞生產緩存

1

如果我們檢查文件系統上的腳本而不是本地Web服務器,我會選擇這種方式,而不是檢查locat ion.host(在這種情況下爲空字符串):

var require.urlArgs = (window.location.protocol == 'file:') ? 'bust='+new Date().getTime() : ''