頁面嵌套 Iframe 產生緩存導致頁面數據不刷新問題


  最近遇到個比較古怪的問題:當頁面嵌套多個 Iframe 時會出現 Iframe 里包含的頁面無法看到最新的頁面信息。

  初步解決方案,在 Iframe 指向的頁面地址后綴添加一個隨機數或者時間戳。這樣能確保每次在加載頁面時,讓瀏覽器知道它是最新的頁面。說白了就是欺騙下瀏覽器,躲過緩存的災難。(這是從 Stack Overflow 和 CSDN 上找到一個看似可行,能徹底治根的辦法。 )

  Sample Code:

  通過 JS 產生隨機數,把數據數當成參數傳給頁面地址

<script type="text/javascript">
var randomnumber=Math.floor(Math.random()*100000);
document.write('<iframe src="xxxx.aspx?_='+randomnumber+'"></iframe>');
</script>

 通過時間戳的辦法

<script>
var ts=new Date().getTime()
document.write('<iframe src="xxxx.asp?_='+ts+'"></iframe>');
document.write('<iframe src="xxxxxx.asp?_='+ts+'"></iframe>');
document.write('<iframe src="xxxxxxxx.asp?_='+ts+'"></iframe>');
</script>

但這樣現象依舊,實在快崩潰了。我依舊沿着這個方向去找,畢竟 Iframe 產生緩存是根源。既然瀏覽器端用這種方式依舊無法解決。只好從服務器端下手了,突然靈光一現,IIS 貌似有個可以自動保留緩存的機制。

看來距離徹底治根的辦法不遠了。開始進入測試環境的 VM 機,把 IIS 給開起來,一開始有個配置項就吸引我了。 “HTTP 響應標頭”, 因為最最最早在處理這個辦法的時候就是利用 JS 來強制清除瀏覽器緩存(可以參考如下,雖然這個辦法沒根治,但應該有需要這個方法的碼友)。

<META HTTP-EQUIV="pragma" CONTENT="no-cache"> 
<META HTTP-EQUIV="Cache-Control" CONTENT= "no-cache, must-revalidate"> 
<META HTTP-EQUIV="expires" CONTENT= "Wed, 26 Feb 1997 08:21:57 GMT"> 

開始配置 HTPP 響應標頭。

   1. 進入 IIS ,找到傳說中的 “ HTTP 響應標頭”,進入 HTTP 響應標頭

     

   2.添加自定義 HTTP 響應標頭

   

  問題終於得到解決..


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM