1.禁止客戶端快取要在
中加入類似如下內容
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
iOS 快取清除方法
沒有固定的方法,你既然有做對應的快取機制,這個機制就應該有清除快取的方法。例如如果你使用某個第三方的庫,這個庫有快取機制,那麼它就應該提供對應的清除快取的方法。你呼叫對應的方法進行清除,如果你自己有用到資料庫,那麼你就應該清除資料庫裡面的資料等等。指的是沙盒下的快取資料夾麼 移動應用在處理網路資源時...
清除快取資料的方法
我們在做專案的時候,常常需要乙個清除資料快取的功能,下面的一些 是我平常用的清除快取的方法 import uiimageview webcache.h import sdimagecache.h 包含標頭檔案 借助於sdwebimage庫 建立乙個button uibutton delbutton ...
squid快取清除的方法
如何清除squid 快取 1 首先在squid 的主配置檔案中新增acl 列表,並允許受信任的主機有許可權清除快取 2 清除squid 中一條快取 usr local squid bi squidclient h 192.168.1.145 p 80 m purge 3 批量清除squid 快取中的...