JSP頁(yè)面緩存cache技術(shù)--瀏覽器緩存介紹及實(shí)現(xiàn)方法_JSP教程
推薦:JSP上傳圖片產(chǎn)生 java.io.IOException: Stream closed異常解決方法在做jsp上傳圖片時(shí),把java代碼直接改成 jsp,上傳時(shí)產(chǎn)生異常,很是疑惑,于是搜索整理了一下解決方法,需要了解的朋友可以參考下
一、概述緩存的思想可以應(yīng)用在軟件分層的各個(gè)層面。它是一種內(nèi)部機(jī)制,對(duì)外界而言,是不可感知的。
數(shù)據(jù)庫(kù)本身有緩存,持久層也可以緩存。(比如:hibernate,還分1級(jí)和2級(jí)緩存)
業(yè)務(wù)層也可以有緩存(但一般來(lái)說(shuō),這是一個(gè)過(guò)程域,不會(huì)設(shè)緩存)。
表現(xiàn)層/數(shù)據(jù)服務(wù)層(傳統(tǒng)web的表現(xiàn)層)也可以設(shè)置緩存(jsp cache 就是這一層,實(shí)現(xiàn)在app server上的緩存機(jī)制)
另外Browser也有緩存(如IE)這個(gè)大家也都知道(實(shí)現(xiàn)在 web server 上的緩存機(jī)制)。越上層的緩存效果越好,越底層的緩存影響越深遠(yuǎn)。
二、緩存實(shí)現(xiàn)(瀏覽器緩存當(dāng)前訪問(wèn)的JSP動(dòng)態(tài)頁(yè)面)
(一)、服務(wù)端方法:
復(fù)制代碼 代碼如下:m.hl5o.cn
<%
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", -10);
%>
(二)、客戶端方法:
meta是用來(lái)在HTML文檔中模擬HTTP協(xié)議的響應(yīng)頭報(bào)文。meta 標(biāo)簽用于網(wǎng)頁(yè)的<head>與</head>中,meta 標(biāo)簽的用處很多。meta 的屬性有兩種:name和http-equiv。name屬性主要用于描述網(wǎng)頁(yè),對(duì)應(yīng)于content(網(wǎng)頁(yè)內(nèi)容),以便于搜索引擎機(jī)器人查找、分類(目前幾乎所有的搜索引擎都使用網(wǎng)上機(jī)器人自動(dòng)查找meta值來(lái)給網(wǎng)頁(yè)分類)。這其中最重要的是description(站點(diǎn)在搜索引擎上的描述)和keywords(分類關(guān)鍵詞),所以應(yīng)該給每頁(yè)加一個(gè)meta值。比較常用的有以下幾個(gè):
name 屬性
1、<meta name="Generator" contect="">用以說(shuō)明生成工具(如Microsoft FrontPage 4.0)等;
2、<meta name="KEYWords" contect="">向搜索引擎說(shuō)明你的網(wǎng)頁(yè)的關(guān)鍵詞;
3、<meta name="DEscription" contect="">告訴搜索引擎你的站點(diǎn)的主要內(nèi)容;
4、<meta name="Author" contect="你的姓名">告訴搜索引擎你的站點(diǎn)的制作的作者;
5、<meta name="Robots" contect="all|none|index|noindex|follow|nofollow">
其中的屬性說(shuō)明如下:
設(shè)定為all:文件將被檢索,且頁(yè)面上的鏈接可以被查詢;
設(shè)定為none:文件將不被檢索,且頁(yè)面上的鏈接不可以被查詢;
設(shè)定為index:文件將被檢索;
設(shè)定為follow:頁(yè)面上的鏈接可以被查詢;
設(shè)定為noindex:文件將不被檢索,但頁(yè)面上的鏈接可以被查詢;
設(shè)定為nofollow:文件將不被檢索,頁(yè)面上的鏈接可以被查詢。
http-equiv屬性
1、<meta http-equiv="Content-Type" contect="text/html";charset=gb_2312-80">
和<meta http-equiv="Content-Language" contect="zh-CN">用以說(shuō)明主頁(yè)制作所使用的文字以及語(yǔ)言;又如英文是ISO-8859-1字符集,還有BIG5、utf-8、shift-Jis、Euc、Koi8-2等字符集;
2、<meta http-equiv="Refresh" contect="n;url=http://yourlink">定時(shí)讓網(wǎng)頁(yè)在指定的時(shí)間n內(nèi),跳轉(zhuǎn)到頁(yè)面http;//yourlink;
3、<meta http-equiv="Expires" contect="Mon,12 May 2001 00:20:00 GMT">可以用于設(shè)定網(wǎng)頁(yè)的到期時(shí)間,一旦過(guò)期則必須到服務(wù)器上重新調(diào)用。需要注意的是必須使用GMT時(shí)間格式;
4、<meta http-equiv="Pragma" contect="no-cache">是用于設(shè)定禁止瀏覽器從本地機(jī)的緩存中調(diào)閱頁(yè)面內(nèi)容,設(shè)定后一旦離開(kāi)網(wǎng)頁(yè)就無(wú)法從Cache中再調(diào)出;
5、<meta http-equiv="set-cookie" contect="Mon,12 May 2001 00:20:00 GMT">cookie設(shè)定,如果網(wǎng)頁(yè)過(guò)期,存盤的cookie將被刪除。需要注意的也是必須使用GMT時(shí)間格式;
6、<meta http-equiv="Pics-label" contect="">網(wǎng)頁(yè)等級(jí)評(píng)定,在IE的internet選項(xiàng)中有一項(xiàng)內(nèi)容設(shè)置,可以防止瀏覽一些受限制的網(wǎng)站,而網(wǎng)站的限制級(jí)別就是通過(guò)meta屬性來(lái)設(shè)置的;
7、<meta http-equiv="windows-Target" contect="_top">強(qiáng)制頁(yè)面在當(dāng)前窗口中以獨(dú)立頁(yè)面顯示,可以防止自己的網(wǎng)頁(yè)被別人當(dāng)作一個(gè)frame頁(yè)調(diào)用;
8、<meta http-equiv="Page-Enter" contect="revealTrans(duration=10,transtion= 50)">和<meta http-equiv="Page-Exit" contect="revealTrans(duration=20,transtion =6)">設(shè)定進(jìn)入和離開(kāi)頁(yè)面時(shí)的特殊效果,這個(gè)功能即FrontPage中的“格式/網(wǎng)頁(yè)過(guò)渡”,不過(guò)所加的頁(yè)面不能夠是一個(gè)frame頁(yè)面。
三、緩存應(yīng)用
(一)、防止JSP頁(yè)面緩存為了防止瀏覽器緩存當(dāng)前訪問(wèn)的JSP動(dòng)態(tài)頁(yè)面,可以采用如下的方式進(jìn)行設(shè)置:
<%
// 將過(guò)期日期設(shè)置為一個(gè)過(guò)去時(shí)間
response.setHeader("Expires", "Sat, 6 May 199512:00:00 GMT");
// 設(shè)置 HTTP/1.1 no-cache 頭
response.setHeader("Cache-Control", "no-store,no-cache,must-revalidate");
// 設(shè)置 IE 擴(kuò)展 HTTP/1.1 no-cache headers, 用戶自己添加
response.addHeader("Cache-Control", "post-check=0, // 設(shè)置標(biāo)準(zhǔn) HTTP/1.0 no-cache header.
response.setHeader("Pragma", "no-cache");
%>
當(dāng)然,每一個(gè)頁(yè)面都包含這些代碼會(huì)很繁瑣,可以通過(guò)自定義過(guò)濾器(Filter)的方法來(lái)處理相關(guān)的頁(yè)面
(二)、jsp,html 清除頁(yè)面緩存
1.禁止客戶端緩存要在<head>中加入類似如下內(nèi)容:
復(fù)制代碼 代碼如下:m.hl5o.cn
<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 199708:21:57 GMT">
或
復(fù)制代碼 代碼如下:m.hl5o.cn
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
2.在服務(wù)器的動(dòng)態(tài)網(wǎng)頁(yè)中禁止緩存,要加入類似如下腳本
復(fù)制代碼 代碼如下:m.hl5o.cn
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);
(三)設(shè)置有限時(shí)間的緩存
復(fù)制代碼 代碼如下:m.hl5o.cn
int minutes = 10;
Date d = new Date();
String modDate = d.toGMTString();
String expDate = null;
expDate = (new Date(d.getTime() + minutes * 60000)).toGMTString();
response.setHeader("Last-Modified", modDate);
response.setHeader("Expires", expDate);
response.setHeader("Cache-Control", "public"); // HTTP/1.1
response.setHeader("Pragma", "Pragma"); // HTTP/1.0
補(bǔ)充:關(guān)于.jsp cache的幾條建議:
1.jsp cache最好做在過(guò)濾器上,把需要緩沖的頁(yè)面集中在同一個(gè)目錄下,每次更改只須更改web.xml就可以完成緩沖設(shè)置,這樣比較方便.
2.Gzip壓縮可以將頁(yè)面壓縮得很小,平均壓縮比為1/3,jsp cache的HashMap緩沖壓縮后的頁(yè)面,肯定比沒(méi)壓縮前更節(jié)約內(nèi)存消耗,并且效率更高.
分享:JSP程序員成長(zhǎng)之路一個(gè)普普通通的不正確是把 JSP當(dāng)作簡(jiǎn)化的Java,它不可能,(實(shí)際上, JSP是簡(jiǎn)化的Servlet)程序員一般試著沒(méi)有學(xué)習(xí)需要的支持技巧而直接學(xué)習(xí)JSP。JSP是一個(gè)銜接技術(shù),并且成功地連接您就得理解的還有的技術(shù)�?赡苣梢灾繨ava,HTML和java script,這代表著JSP用確實(shí)是
相關(guān)JSP教程:
- jsp response.sendRedirect不跳轉(zhuǎn)的原因分析及解決
- JSP指令元素(page指令/include指令/taglib指令)復(fù)習(xí)整理
- JSP腳本元素和注釋復(fù)習(xí)總結(jié)示例
- JSP FusionCharts Free顯示圖表 具體實(shí)現(xiàn)
- 網(wǎng)頁(yè)模板:關(guān)于jsp頁(yè)面使用jstl的異常分析
- JSP頁(yè)面中文傳遞參數(shù)使用escape編碼
- 基于jsp:included的使用與jsp:param亂碼的解決方法
- Java Web項(xiàng)目中連接Access數(shù)據(jù)庫(kù)的配置方法
- JDBC連接Access數(shù)據(jù)庫(kù)的幾種方式介紹
- 網(wǎng)站圖片路徑的問(wèn)題:絕對(duì)路徑/虛擬路徑
- (jsp/html)網(wǎng)頁(yè)上嵌入播放器(常用播放器代碼整理)
- jsp下顯示中文文件名及絕對(duì)路徑下的圖片解決方法
JSP教程Rss訂閱編程教程搜索
JSP教程推薦
- 處理jsp顯示文字過(guò)長(zhǎng)問(wèn)題的解決方法
- JSP和Java Servlet的技術(shù)概述以及比較
- J2ME編程實(shí)踐之屏幕導(dǎo)航
- 解讀jsp數(shù)據(jù)庫(kù)編程技巧
- JSP教程tomcat配置數(shù)據(jù)庫(kù)連接池
- JSP動(dòng)態(tài)網(wǎng)站環(huán)境搭建的詳細(xì)步驟
- 檢測(cè)輸入的字符是否為0-9的數(shù)字(測(cè)試)
- 解讀Spring異常處理
- 解析struts+spring+hibernat整合練習(xí)示例
- J2EE程序中的SQL語(yǔ)句自動(dòng)構(gòu)造方法講解
- 相關(guān)鏈接:
復(fù)制本頁(yè)鏈接| 搜索JSP頁(yè)面緩存cache技術(shù)--瀏覽器緩存介紹及實(shí)現(xiàn)方法
- 教程說(shuō)明:
JSP教程-JSP頁(yè)面緩存cache技術(shù)--瀏覽器緩存介紹及實(shí)現(xiàn)方法
。