網頁清除緩存方法

1.禁止客戶端緩存要在

<head>中加入類似如下內容

<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">


2.在服務器的動態網頁中禁止緩存,要加入類似如下腳本

 

(1)asp

<%
Response.Expires = -1
Response.ExpiresAbsolute = Now() - 1
Response.cachecontrol = "no-cache"
%>

 

(2)php

header("Pragma:no-cache");  

header("Cache-Control","no-cache");
header("Expires:0");

 

(3)jsp

response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);

 

Pragma HTTP頭信息 (爲什麼它不起作用)

很多人認爲在HTTP頭信息中設置了Pragma: no-cache後會讓內容無法被緩存。但事實並非如此:HTTP的規範中,響應型頭信息沒有任何關於Pragma屬性的說明,而討論了的是請求型頭信息 Pragma屬性(頭信息也由瀏覽器發送給服務器),雖然少數集中緩存服務器會遵循這個頭信息,但大部分不會。用了Pragma也不起什麼作用,要用就使 用下列頭信息:

使用Expires(過期時間)HTTP頭信息來控制保鮮期

Expires(過期時間) 屬性是HTTP控制緩存的基本手段,這個屬性告訴緩存器:相關副本在多長時間內是新鮮的。過了這個時間,緩存器就會向源服務器發送請求,檢查文檔是否被修改。幾乎所有的緩存服務器都支持Expires(過期時間)屬性;

大部分Web服務器支持你用幾種方式設置Expires屬性;一般的:可以設計一個絕對時間間隔:基於客戶最後查看副本的時間(最後訪問時間)或者根據服務器上文檔最後被修改的時間;

Expires頭信息:對於設置靜態圖片文件(例如導航欄和圖片按鈕)可緩存特別有用;因爲這些圖片修改很少,你可以給它們設置一個特別長的過期時間,這會使你的網站對用戶變得相應非常快;他們對於控制有規律改變的網頁也很有用,例如:你每天早上6點更新新聞頁,你可以設置副本的過期時間也是這個時間,這樣緩存 服務器就知道什麼時候去取一個更新版本,而不必讓用戶去按瀏覽器的“刷新”按鈕。

過期時間頭信息屬性值只能是HTTP格式的日期時間,其他的都會被解析成當前時間“之前”,副本會過期,記住:HTTP的日期時間必須是格林威治時間(GMT),而不是本地時間。舉例:

Expires: Fri, 30 Oct 1998 14:19:41 GMT

所以使用過期時間屬性一定要確認你的Web服務器時間設置正確,一個途徑是通過網絡時間同步協議(Network Time Protocol NTP),和你的系統管理員那裏你可以瞭解更多細節。
雖然過期時間屬性非常有用,但是它還是有些侷限,首先:是牽扯到了日期,這樣Web服務器的時間和緩存服務器的時間必須是同步的,如果有些不同步,要麼是應該緩存的內容提前過期了,要麼是過期結果沒及時更新。
還有一個過期時間設置的問題也不容忽視:如果你設置的過期時間是一個固定的時間,如果你返回內容的時候又沒有連帶更新下次過期的時間,那麼之後所有訪問請求都會被髮送給源Web服務器,反而增加了負載和響應時間;

Cache-Control(緩存控制) HTTP頭信息

HTTP 1.1介紹了另外一組頭信息屬性:Cache-Control響應頭信息,讓網站的發佈者可以更全面的控制他們的內容,並定位過期時間的限制。
有用的 Cache-Control響應頭信息包括:

  • max-age=[秒] — 執行緩存被認爲是最新的最長時間。類似於過期時間,這個參數是基於請求時間的相對時間間隔,而不是絕對過期時間,[秒]是一個數字,單位是秒:從請求時間開始到過期時間之間的秒數。
  • s-maxage=[秒] — 類似於max-age屬性,除了他應用於共享(如:代理服務器)緩存
  • public — 標記認證內容也可以被緩存,一般來說: 經過HTTP認證才能訪問的內容,輸出是自動不可以緩存的;
  • no-cache — 強制每次請求直接發送給源服務器,而不經過本地緩存版本的校驗。這對於需要確認認證應用很有用(可以和public結合使用),或者嚴格要求使用最新數據的應用(不惜犧牲使用緩存的所有好處);
  • no-store — 強制緩存在任何情況下都不要保留任何副本
  • must-revalidate — 告訴緩存必須遵循所有你給予副本的新鮮度的,HTTP允許緩存在某些特定情況下返回過期數據,指定了這個屬性,你高速緩存,你希望嚴格的遵循你的規則。
  • proxy-revalidate — 和 must-revalidate類似,除了他只對緩存代理服務器起作用

舉例:

Cache-Control: max-age=3600, must-revalidate

 

更多關於緩存的內容http://blog.csdn.net/xingyu15/archive/2009/10/19/4699213.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章