在網路上搜尋的都是ASP的 PHP怎麼阻止後退按鈕的快取呢?
在網路上搜尋的都是ASP的 PHP怎麼阻止後退按鈕的快取呢?
無法阻止瀏覽的history.back()
等行為
可以考慮設定頁面為無快取
<code>$nocache = array( 'Expires' => '0', 'Cache-Control' => 'no-store,private, post-check=0, pre-check=0, max-age=0', 'Pragma' => 'no-cache' ); foreach($nocache as k => $v) header($k.': '.$v); </code>
如果真的要拒絕後退,可以使用以下方法模擬,考慮做一道跳轉,這樣後退一次,會自動跳到當前頁面,近似於刷新
<code>header('Location: index.php');</code>
拿首頁分頁連結來說:<a href="/index.php?page=3" onclick="page(3);return false;">3</a>
搜尋引擎的爬蟲會根據href存取/index.php?page=3
取得第3頁資料,利於SEO.
用戶在瀏覽器裡右鍵選擇"在新分頁中開啟"也能正常存取/index.php?page=3 .
如果使用者在頁面直接點擊連結,則觸發click事件,由JS透過AJAX載入並渲染局部資料,以及設定location.hash為/index.php#/page/3
.location.hash = " #/page/3";
瀏覽器能夠自行記住location.hash歷史記錄,我們只需監聽location.hash改變的事件hashchange
(支援IE8,不支援IE7/6)就能實現使用者點擊瀏覽器返回按鈕時重新載入頁面的效果.
<code>$(window).on("hashchange", function(){ alert(location.hash); //输出#/page/2 var arr = location.hash.split("/"); // ["#", "page", "2"] if(arr[1] == "page") { page(arr[2]); //AJAX局部加载第2页数据 //location.href = "/index.php?page="+arr[2]+"&"+new Date().getTime(); //直接访问第2页 } });</code>
上面這種"SEO和體驗並重的超鏈結設計"應該能滿足樓主需求,不過需要一定的改造成本.
頁面載入完成js刷新頁面location.href = location.href