溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

[置頂]       兼容解決 IE 、火狐、谷歌瀏覽器中 Iframe框架的頁面緩存的方法

發(fā)布時間:2020-06-12 18:22:07 來源:網(wǎng)絡(luò) 閱讀:538 作者:873582595 欄目:web開發(fā)

在我們的項目中往往少不了廣告的成分,有的時候我們?yōu)榱朔奖阈薷囊话銜x擇iframe嵌套進來的方法,開始的時候沒怎么留意,一般自己換廣告也是強制刷新,直到后來看廣告統(tǒng)計的ip發(fā)現(xiàn)好多廣告都下架了半個月了可是居然還有點擊,才注意到了這一塊,那就是瀏覽器為了加載速度會緩存iframe里面的內(nèi)容,而好多客戶是根本不懂強制刷新的,那么我們就需要做一些操作不讓緩存,我們一般會選擇后面加上隨機數(shù)的方法來做。

下面是網(wǎng)上普遍說的方法:

原文是這么說的:

?
不管是IE還是火狐瀏覽器,對于iframe 都是有緩存的,可能很多開發(fā)的朋友都沒有注意,
 
包子在開發(fā)安徽商之都百萬網(wǎng)友秒殺盛宴活動
 
秒殺專題的時候就遇到類似的狀況,即使你的iframe地址是php動態(tài)頁面也都會出現(xiàn)瀏覽器緩存,
 
一開始,我以為只要在php的頁面使用header禁止緩存就OK了,但是貌似不行。。額。。
 
我們先來看下,火狐下解決Iframe框架的頁面緩存的方法,
 
從國外的一個博客上看到的一個方法,原文如下:
 
Hi
 
I have a page that contains an iframe. The contents of the iframe are created dynamically,
 
so every time I come to the page containing this iframe I want to force the iframe to refresh. I added these meta tags to the iframe’s head:
  
 
 
<META http-equiv="Expires" content="Mon, 26 Jul 1997 05:00:00 GMT">
<META http-equiv="Last-Modified" content="Sat, 10 Nov 1997 09:08:07 GMT">
<META http-equiv="Cache-Control" content="no-store, no-cache, must-revalidate">
<META http-equiv="Pragma" content="no-cache">
  
and I also add a different random number to the iframe src each time:
  
<IFRAME SRC="http://lab.wehefei.com/index.php?r=xO9X7hEp2wgW5ZTSB38dCrKQnkyq4MA_" WIDTH=900 HEIGHT=600>
  
  
  
It works in Firefox, but in IE6 it still caches the old page.
  
http://lab.wehefei.com
  
 
額。意思你明白不???嘿嘿,還好,我的計算機英語非常過關(guān),哈哈。,。,。。我不就翻譯了。,
 
很簡單的,火狐 中 Iframe框架的頁面緩存的方法方法兩個:
 
1、使用上面的meta頭信息,當然如果使用php動態(tài)頁面,你最好也發(fā)送header頭信息,禁止下緩存
 
2、添加一個隨機數(shù)。在html的后面。呵呵
 
下面。我們來看下,IE中解決iFrame緩存問題的方法有兩種:
 
(1) 每次主頁面刷新時隨機更換iframe的name;
 
(2) 每次主頁面刷新時在iframe的src路徑頁面賦予一個隨機get參數(shù),例如:
 
<iframe src=”http://www.example.com/thepage.html” name=”aframe”></iframe>
 
<script type=”text/javascript”>
 
document.frames["aframe"].location.href += (document.frames["aframe"].location.href.indexOf(“?”) != -1 ? “?” : “&”) + (new Date()).getTime();
 
</script>

但是呢,我覺得他這種方法過于麻煩,需要區(qū)分IE和谷歌然后分別來寫相應(yīng)的實現(xiàn)方式。

下面來說一種不需要區(qū)分就能沒有緩存的方法:

<script type="text/javascript">         document.write('<iframe src="/ad_footer.html?'+ (new Date()).getTime() +'" width="918" scrolling="no" frameborder="0" height="41"></iframe>'); </script>

這種方法經(jīng)測試有效,也不需要區(qū)分瀏覽器,ok,希望可以幫到大家,如果有其他更簡單的方法也可以發(fā)布上來。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI