一、概述
快取的思想可以應用在軟體分層的各個層面。它是一種內部機制,對外界而言,是不可感知的。
資料庫本身有快取,持久層也可以快取。(比如:hibernate,還分1級和2級快取)
業務層也可以有快取(但一般來說,這是乙個過程域,不會設快取)。
表現層/資料服務層(傳統web的表現層)也可以設定快取(jsp cache 就是這一層,實現在app server上的快取機制)
另外browser也有快取(如ie)這個大家也都知道(實現在 web server 上的快取機制)。越上層的快取效果越好,越底層的快取影響越深遠。
二、快取實現(瀏覽器快取當前訪問的jsp動態頁面)
(一)、服務端方法:
複製** **如下:
response.setheader("pragma","no-cache");
response.setheader("cache-control","no-cache");
response.setdateheader("expires", -10);
%>
(二)、客戶端方法:
meta是用來在html文件中模擬http協議的響應頭報文。meta 標籤用於網頁的<head>與</head>中,meta 標籤的用處很多。meta 的屬性有兩種:name和http-equiv。name屬性主要用於描述網頁,對應於content(網頁內容),以便於搜尋引擎機械人查詢、分類(目前幾乎所有的搜尋引擎都使用網上機械人自動查詢meta值來給網頁分類)。這其中最重要的是description(站點在搜尋引擎上的描述)和keywords(分類關鍵詞),所以應該給每頁加乙個meta值。比較常用的有以下幾個:
name 屬性
1、<meta name="generator" contect="">用以說明生成工具(如microsoft frontpage 4.0)等;
2、<meta name="keywords" contect="">向搜尋引擎說明你的網頁的關鍵詞;
3、<meta name="description" contect="">告訴搜尋引擎你的站點的主要內容;
4、<meta name="author" contect="你的姓名">告訴搜尋引擎你的站點的製作的作者;
5、<meta name="robots" contect="all|none|index|noindex|follow|nofollow">
其中的屬性說明如下:
設定為all:檔案將被檢索,且頁面上的鏈結可以被查詢;
設定為none:檔案將不被檢索,且頁面上的鏈結不可以被查詢;
設定為index:檔案將被檢索;
設定為follow:頁面上的鏈結可以被查詢;
設定為noindex:檔案將不被檢索,但頁面上的鏈結可以被查詢;
設定為nofollow:檔案將不被檢索,頁面上的鏈結可以被查詢。
http-equiv屬性
和<meta http-equiv="content-language" contect="zh-cn">用以說明主頁製作所使用的文字以及語言;又如英文是iso-8859-1字符集,還有big5、utf-8、shift-jis、euc、koi8-2等字符集;
2、<meta http-equiv="refresh" contect="n;url=http://yourlink">定時讓網頁在指定的時間n內,跳轉到頁面http;//yourlink;
3、<meta http-equiv="expires" contect="mon,12 may 2001 00:20:00 gmt">可以用於設定網頁的到期時間,一旦過期則必須到伺服器上重新呼叫。需要注意的是必須使用gmt時間格式;
4、<meta http-equiv="pragma" contect="no-cache">是用於設定禁止瀏覽器從本地機的快取中調閱頁面內容,設定後一旦離開網頁就無法從cache中再調出;
5、<meta http-equiv="set-cookie" contect="mon,12 may 2001 00:20:00程式設計客棧 gmt">cookie設定,如果網頁過期,存檔的cookie將被刪除。需要注意的也是必須使用gmt時間格式;
6、<meta http-equiv="pics-label" contect="">網頁等級評定,在ie的internet選項中有一項內容設定,可以防止瀏覽一些受限制的**,而**的限制級別就是通過meta屬性來設定的;
7、<meta http-equiv="windows-target" contect="_top">強制頁面在當前視窗中以獨立頁面顯示,可以防止自己的網頁被別人當作乙個frame頁呼叫;
8、<meta http-equiv="page-enter" contect="revealtrans(duration=10,transtion= 50)">和<meta http-equiv="page-exit" contect="revealtrans(duration=20,transtion =6)">設定進入和離開頁面時的特殊效果,這個功能即frontpage中的「格式/網頁過渡」,不過所加的頁面不能夠是乙個frame頁面。
三、快取應用
(一)、防止jsp頁面快取為了防止瀏覽器快取當前訪問的jsp動態頁面,可以採用如下的方式進行設定:
// 將過期日期設定為乙個過去時間
response.setheader("expires", "sat, 6 may 199512:00:00 gmt");
// 設定 http/1.1 no-cache 頭
response.setheader("cache-control", "no-store,no-cache,must-revalidate");
// 設定 ie 擴充套件 http/1.1 no-cache headers, 使用者自己新增
response.addheader("cache-control", "post-check=0, pre-check=0");
// 設定標準 http/1.0 no-cache header.
response.setheader("pragma", "no-cache");
%>
當然,每乙個頁面都包含這些**會很繁瑣,可以通過自定義過濾器(filter)的方法來處理相關的頁面
(二)、 清除頁面快取
1.禁止客戶端快取要在中加入類似如下內容:
複製** **如下:
或 複製** **如下:
程式設計客棧
">
2.在伺服器的動態網頁中禁止快取,要加入類似如下指令碼
複製** **如下:
response.setheader("pragma","no-cache");
response.setheader("cache-control","no-cache");
response.setdateheader("expires", 0);
(三)設定有限時間的快取
複製** **如下:
補充:關於.jsp cache的幾條建議:
1.jsp cache最好做在過濾器上,把需要緩衝的頁面集中在同乙個目錄下,每次更改只須更改web.xml就可以完成緩衝設定,這樣比較方便.
2.gzip壓縮可以將頁面壓縮得很小,平均壓縮比為1/3,jsp cache的hashmap緩衝壓縮後的頁面,肯定比沒壓縮前更節約記憶體消耗,並且效率更高.
本文標題: jsp頁面快取cache技術--瀏覽器快取介紹及實現方法
本文位址: /wangluo/jsp/90887.html
使用Cache快取Page頁面
使用cache outputcache duration 15 varybypara none 頁面使用cache,cache的有效期為15 seconds 使用 表示,放在page load裡面 cache manager可以控制這個頁面 告訴cache manager,頁面的有效期為當前時間 1...
使用Cache快取Page頁面
使用cache outputcache duration 15 varybypara none 頁面使用cache,cache的有效期為15 seconds 使用 表示,放在page load裡面 cache manager可以控制這個頁面 告訴cache manager,頁面的有效期為當前時間 1...
jsp頁面禁用快取
a頁面跳轉到b頁面後,按返回按鈕,返回頁面a後並沒有繼續處理,而是卡住了,原因是jsp頁面被瀏覽器快取了。因此需要禁用jsp頁面快取。正確的做法 page contenttype text html charset utf 8 response.setheader pragma no cache r...