我和這個問題的作者有完全一樣的問題:Preventing iframe caching in browser - 我的iframe中的url被緩存。我在我的頭文件中請求了一些矯枉過正的反高速緩存策略,Fiddler顯示了youtube視頻(iframe中的頁面)也沒有被緩存,只是每當我使用iframe重新加載頁面時,URL都是一樣的。防止在沒有JavaScript的iframe中進行URL緩存
有什麼不同?可能適用的鏈接問題的答案假設iframe是由JavaScript動態構建的。但是,我將iframe作爲一個普通的靜態HTML,只是通過php動態插入了少量參數。通過JavaScript實現整個網站的這一功能(這不是很大)可能是一種解決方法,但我寧願堅持使用php/html。
因此:是否可以防止在沒有JavaScript的iframe中緩存URL?如果是,如何?
編輯 - 我的代碼:
提琴手顯示:
主持人:www.youtube.com
網址:/embed/M7lc1UVf-VE?enablejsapi=1&origin=http://example.com
緩存:無緩存;過期時間:Tue, 27 Apr 1971 19:44:06 EST
緩存我網頁上的外部頁面:no-store, no-cache, must-revalidate, post-check=0, pre-check=0; Expires: Thu, 19 Nov 1981 08:52:00 GMT
如果需要,請求其他字段。
通過的Fiddler顯示的URL是我在那裏第一次,當我從YouTube Player API(第二碼塊中的鏈接,在那裏示出的iframe中普通的HTML複製的iframe模板的URL。
我高速緩存相關的報頭(在.htaccess):
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
而且在元:
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="cache-control" content="no-cache" />
在提琴手顯示的截止日期建議我連訂購更多反緩存標題when I though I had a caching problem。這在理論上可能會導致問題的產生,儘管這似乎不太可能。
還有一些可能相關的信息:我在我的網站上有另一個iframe,它的工作方式應該如此,除了Google地圖常用的功能外,沒有緩存。此工作內聯框架的代碼:
if(isset($kml)) {
$adr = 'https://maps.google.com?q='.$kml.'&ll=';
} else {
$adr = 'https://maps.google.com?ll=';
}
$adr .= $lat.','.$lon.'&z='.$zoom;
$adr .= '&t=h&output=embed';
echo '<iframe class="mapa" src="'.$adr.'"></iframe>';
您可以在每次加載時在網址末尾添加一個隨機獲取字符串,以誘使瀏覽器將其視爲不同的頁面。 – cmorrissey
@ChristopherMorrissey:我試過這個,甚至插入一個完全不同的地址,甚至不同的域名。提琴手仍然顯示請求相同的地址。 –
也許如果你顯示你的代碼,有人會看到需要做一些不同的事情。 – TecBrat