作者 主題: Internet Explorer 11 如何讓網頁不暫存 (No Cache)  (閱讀 7726 次)

0 會員 與 1 訪客 正在閱讀本文。

hoyo

  • 榮譽博士
  • 俺是博士!
  • *****
  • 文章數: 4053
  • 性別: 男
  • 有需要的時候,學習就不會分階段。
    • 檢視個人資料
    • 樂咖黑電腦學習網
我在 php 內寫了一段 no cache 的語法,大概像這樣
代碼: [選擇]
<?php
header
("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0"false);
header("Pragma: no-cache");
?>


大部份的瀏覽器都很聽話,在這樣子的網頁都不需要按 F5 重新整理就可以讀取到最新的資料,除了 Internet Explorer 11 ..........

官方給了這樣子的說明 http://msdn.microsoft.com/zh-tw/library/ie/dn265017(v=vs.85).aspx

我目前只有使用兩種方式才讓 IE 11 失去 cache 能力

1. 使用 onpageshow ,例如 <body onpageshow="alert('a')"> ,而且只有 alert() 有功能,其他不影響網頁的一律失敗,例如 void(0)
2. 上面的 no cache header + HTTPS .......... 所以我為了這個鳥瀏覽器還要花一萬多買憑證 ? (自己發的憑證已經驗證成功了)

不知道其他大大是否有這個鳥問題的解決方法

-----------------

鳥問題測試網址

HTTP: http://www.hoyo.idv.tw/a.php
HTTPS: https://www.hoyo.idv.tw/a.php

按 bbb 連結進入下一頁之後,按上一頁看 rand() 是否顯示了不同的值
« 上次編輯: 2014-03-19 08:23 由 hoyo »
受人與魚,不如授人與漁
上海自來水來自海上;倫敦好奇人奇好敦倫

hikohan

  • 俺是博士!
  • *****
  • 文章數: 1288
    • 檢視個人資料
Re: Internet Explorer 11 如何讓網頁不暫存 (No Cache)
« 回覆 #1 於: 2014-03-19 08:43 »
這以前有給黑大貼過,借花獻佛一下。

foo.php?ut=123456789

就在網址後面跟著unixtime跑一直變動的stamp,讓瀏覽器認為網址異動。
lifeIsFunWithPHP.

hoyo

  • 榮譽博士
  • 俺是博士!
  • *****
  • 文章數: 4053
  • 性別: 男
  • 有需要的時候,學習就不會分階段。
    • 檢視個人資料
    • 樂咖黑電腦學習網
Re: Internet Explorer 11 如何讓網頁不暫存 (No Cache)
« 回覆 #2 於: 2014-03-19 09:27 »
恕本人愚昧,按上一頁如何加入變動網址?

我要即時更新的是原先的頁面,例如 A.php 連結到 B.php ,然後按上一頁之後, A.php 必須顯示最新資料

上一頁應該都是「原先」的網址吧 ..... ???
受人與魚,不如授人與漁
上海自來水來自海上;倫敦好奇人奇好敦倫

hikohan

  • 俺是博士!
  • *****
  • 文章數: 1288
    • 檢視個人資料
Re: Internet Explorer 11 如何讓網頁不暫存 (No Cache)
« 回覆 #3 於: 2014-03-19 11:03 »
頁面移動的主控權透過document裡面的js確認

如果呈現頁第一頁是固定URL,onload時再動一些手腳看看。

showtime.html 變成
showtime.html?ut=123456789

lifeIsFunWithPHP.

hoyo

  • 榮譽博士
  • 俺是博士!
  • *****
  • 文章數: 4053
  • 性別: 男
  • 有需要的時候,學習就不會分階段。
    • 檢視個人資料
    • 樂咖黑電腦學習網
Re: Internet Explorer 11 如何讓網頁不暫存 (No Cache)
« 回覆 #4 於: 2014-03-19 11:15 »
頁面移動的主控權透過document裡面的js確認

如果呈現頁第一頁是固定URL,onload時再動一些手腳看看。

showtime.html 變成
showtime.html?ut=123456789

如此複雜的邏輯,我怕會變成無窮迴圈
受人與魚,不如授人與漁
上海自來水來自海上;倫敦好奇人奇好敦倫

hikohan

  • 俺是博士!
  • *****
  • 文章數: 1288
    • 檢視個人資料
Re: Internet Explorer 11 如何讓網頁不暫存 (No Cache)
« 回覆 #5 於: 2014-03-19 18:02 »
就onload檢查有沒有一位叫做hoyo的變數傳進來...

var mSlocation = document.location.href;
沒有就 document.location.href = '?hoyo='+mNunixTimeStamp;

如果是其他頁面轉進來的,直接href就加個sys timestamp在script LANG上

這樣永遠都會load latest state。

試試看 :-)

lifeIsFunWithPHP.

hoyo

  • 榮譽博士
  • 俺是博士!
  • *****
  • 文章數: 4053
  • 性別: 男
  • 有需要的時候,學習就不會分階段。
    • 檢視個人資料
    • 樂咖黑電腦學習網
Re: Internet Explorer 11 如何讓網頁不暫存 (No Cache)
« 回覆 #6 於: 2014-03-19 19:12 »
就「腦補」思考流程

此方法只能更新一次,當第二次已經有傳遞參數變數時就失效了 ....
受人與魚,不如授人與漁
上海自來水來自海上;倫敦好奇人奇好敦倫