2011-05-07 263 views
9

我有一個嵌入了閃存(flex)應用程序的html頁面。谷歌瀏覽器緩存

我有以下標題:

<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE"> 
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-STORE"> 
<META HTTP-EQUIV="Pragma" CONTENT="no-cache"> 
<META HTTP-EQUIV="Expires" CONTENT="-1"> 

此外,每個我發佈應用程序的新版本時,我更改文件名。因此,它變得像MyApp_v1.swf,然後更新爲MyApp_v2.swf。

儘管如此,Chrome仍然會緩存html頁面和swf文件。這是一個主要問題,因爲客戶端不會看到更新的swf,除非他們清除瀏覽器緩存。

我甚至試圖解決這個不斷變化的htaccess文件和重命名承載SWF文件的index.html文件:

RewriteEngine On 
RewriteCond %{HTTPS} !=on 
RewriteRule ^(.*)$ https://www.mysite.com/app[R,L] 
DirectoryIndex index.html #this was changed from myapp.html 

即使這樣做之後,Chrome仍然會緩存的SWF文件,是仍然從舊的HTML文件中讀取。我在html上查看源代碼,並且仍然顯示舊文件。

這一切工作正常在任何其他瀏覽器。

回答

5

這兩個bug報告涉及,一些好的相關信息,在這裏:

Issue 28035 - chromium - Cache doesn't adhear to No cache options (google crome)

Issue 64139 - chromium - Cache isn't revalidated properly, no-cache directive

另一種解決方案可能是添加特定cache-controlpragma HTTP標頭在上面

的鏈接提到

此外,愚蠢的問題,你測試你的<meta>無緩存標記之前,你清除鉻緩存S'想知道在更改之前它是否仍在使用緩存。

+0

不幸的是,這不是一個完整的解決方案,因爲它不可能告訴我所有的客戶清除緩存。基本上,他們永遠停留在無人地帶,永遠不正確的頁面!我想另一個選擇是將整個應用程序移動到服務器上的一個新目錄中,然後使用一個。htaccess重定向。這應該強制進行適當的刷新並覆蓋瀏覽器緩存,對吧? – JonoB 2011-05-08 01:16:05

+1

如果您在src =「mipaht.jpg?ver = 1」之類的任何src或href屬性的鏈接中添加請求參數,將會強制瀏覽器更新源代碼,適用於javascript,圖像,css,因此在這種情況下也可以工作... – ncubica 2012-01-20 04:07:40

+0

如果您使用動態字符串(如datetime),則可以確保用戶始終下載新版本並永不緩存。例如:'src =「myfile.swf?ver = 1407279708' – DrCord 2014-08-05 23:01:57

2

使用此「無店鋪」額外的標籤,而高速緩存工作在Chromium(Chrome瀏覽器)的罰款作爲其他功能的瀏覽器:

標題(「緩存控制:無緩存,無店,必須重新驗證「);

header(「Pragma:no-cache,no-store」);

0

對於所有你們這個
struggeling我發現一些簡單的工作......

我試圖
1. Ctrl + F5
2.按Ctrl + Shift + 5
3。在開發人員工具中設置「無緩存」。

對我而言,最終有效的是
只需按住CTRL鍵,然後單擊重新加載圖標!

+0

這不是一個解決方案,如果頁面顯示」no-cache「,你不應該強迫它手動遵守指令。沒有指定no-cache。 – cpu 2015-05-11 17:29:10