JSP頁面緩衝技術–瀏覽器緩衝)

來源:互聯網
上載者:User

 

一、概述

    緩衝的思想可以應用在軟體分層的各個層面。它是一種內部機制,對外界而言,是不可感知的。

    資料庫本身有緩衝,持久層也可以緩衝。(比如: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屬性
1、<meta http-equiv="Content-Type" contect="text/html";charset=gb_2312-80">

和 <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 1995 12: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)的方法來處理相關的頁面 

(二)、jsp,html 清除頁面緩衝

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

或   <meta http-equiv="pragma" content="no-cache">

     <meta http-equiv="cache-control" content="no-cache">

     <meta http-equiv="expires" content="0">  

2.在伺服器的動態網頁中禁止緩衝,要加入類似如下指令碼

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

response.setDateHeader("Expires", 0); 

(三)設定有限時間的緩衝

    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 

補充:關於.jsp cache的幾條建議:

1.jsp cache最好做在過濾器上,把需要緩衝的頁面集中在同一個目錄下,每次更改只須更改web.xml就可以完成緩衝設定,這樣比較方便.

2.Gzip壓縮可以將頁面壓縮得很小,平均壓縮比為1/3,jsp cache的HashMap緩衝壓縮後的頁面,肯定比沒壓縮前更節約記憶體消耗,並且效率更高.關於Gzip可以參考這個開源項目:http://sourceforge.net/projects/pjl-comp-filter 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.