直播中
伺服端防止快取
首先來(lái)看看伺服端的方法, ASP 的 Response 物件提供了幾個(gè)網(wǎng)頁(yè)快取 (cache) 相關(guān)的屬性, 說(shuō)明如下
屬性 說(shuō)明
CacheControl 判斷代理伺服器 (Proxy Server) 是否快取 ASP 的輸出結(jié)果
Expires 網(wǎng)頁(yè)快取的逾期時(shí)間
ExpiresAbsolute 指定網(wǎng)頁(yè)快取的逾期時(shí)間
所以如果你要防止網(wǎng)頁(yè)被快取, 你可以這麼做
<%
Response.Buffer = True
Response.ExpiresAbsolute = Now() - 1
Response.Expires = 0
Response.CacheControl = "no-cache"
%>
利用這個(gè)方法, 使用者還是可以回到上一頁(yè), 但由於網(wǎng)頁(yè)並沒(méi)有被快取, 所以瀏覽器必須重新向伺服器作 Http 請(qǐng)求, 也就是這個(gè)網(wǎng)頁(yè)會(huì)被重新整理 (Refresh)
用戶端防止快取
你也可以使用用戶端 (Client-side) 的方式,
<html>
<head>
<meta http-equiv="expires" content="0">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="pragma" content="no-cache">
</head>
和伺服端的方法產(chǎn)生的結(jié)果是一樣的, 但有幾點(diǎn)要注意
Pragma : 當(dāng)使用安全連結(jié)時(shí)才使用 Pragma, 如果在非安全連結(jié)使用, 那麼效果和 Expires : -1 是相同的, 也就是這個(gè)網(wǎng)頁(yè)還是會(huì)被快取, 但會(huì)立即逾時(shí)
meta http-equiv 標(biāo)籤的 cache-control 並不適用於 Internet Explorer 4, 5 版本
移除工具列
這個(gè)方法是在網(wǎng)路上看來(lái)的, 有點(diǎn)趣味所以也介紹一下, 做法是這樣的, 利用 window.open 方法來(lái)開新視窗, 然後關(guān)掉原視窗, 但重點(diǎn)是在開視窗時(shí)將工具列移除
<script language="javascript">
<!--
function openWindow(url){
newpage = window.open(url,'newpage','toolbar=no');
newpage.focus();
self.close();
}
//-->
</script>
<a href="javascript:openWindow('nextpage.html');">下一頁(yè)</a>
也是一種方法, 但應(yīng)該很少人會(huì)用, 有一點(diǎn)麻煩! 況且按滑鼠右鍵所出現(xiàn)的 Menu 中也有回上一頁(yè)的選項(xiàng), 此法謹(jǐn)防君子不防小人!
使用 location.replace
Javascript location 物件的 replace() 方法會(huì)以指定的網(wǎng)址覆蓋瀏覽器目前瀏覽歷史紀(jì)錄, 也就是當(dāng)你用了這個(gè)方法, 瀏覽器就會(huì)忘掉過(guò)去曾經(jīng)瀏覽的紀(jì)錄, 就親像你第一次開啟瀏覽器一樣, 上一頁(yè)的按鈕是灰的
你可以這麼做
<a href="Javascript:location.replace('nextpage.html')">下一頁(yè)</a>
看起來(lái)這大概是目前最好的方法! 不過(guò)還是有一些缺點(diǎn), 因?yàn)閬K不是所有的情況都可以套用, 譬如講當(dāng)你使用 Response.Redirect 時(shí), 這個(gè)方法就派不上用場(chǎng)了!
可以歸納出一個(gè)結(jié)論, 就是要完全關(guān)閉瀏覽器回上一頁(yè)的功能是不可能的 (目前的瀏覽器), 唯一能做的是因時(shí)因地制宜, 結(jié)合以上的方法盡可能的防止使用者按回上一頁(yè)!
希望這篇文章對(duì)你有幫助!