當前位置:首頁 » 文件管理 » jsp禁止頁面緩存

jsp禁止頁面緩存

發布時間: 2024-02-04 20:20:00

㈠ Servlet/JSP怎麼控制頁面緩存於squid中

近段時間在研究如何將Servlet/JSP中的偽動態頁面緩存到Squid中來加速Web訪問,在google上搜索"JSP在squid中的緩存"的信息,出來的信息比較少,後來差PHP,ASP的緩存相關資料及"深入體驗java Web開發內幕——核心基礎.pdf"和"Squid中文權威指南"中的相關章節,總算實現了這個目的(有需要這兩本書的兄弟可以mail我 )。基於自己的一些理解和試驗成果,記下來供以後參考。 HTML的HTTP協議頭信息中控制著頁面在幾個地方的緩存信息,包括瀏覽器端,中間緩存伺服器端(如:squid等),Web伺服器端。本文討論頭信息中帶緩存控制信息的HTML頁面(JSP/Servlet生成好出來的也是HTML頁面)在中間緩存伺服器中的緩存情況。
HTTP協議中關於緩存的信息頭關鍵字包括Cache-Control(HTTP1.1),Pragma(HTTP1.0),last-Modified,Expires等。
HTTP1.0中通過Pragma 控制頁面緩存,可以設置:Pragma或no-cache。網上有非常多的文章說明如何控制不讓瀏覽器或中間緩存伺服器緩存頁面,通常設置的值為no-cache,不過這個值不這么保險,通常還加上Expires置為0來達到目的。但是如我們刻意需要瀏覽器或緩存伺服器緩存住我們的頁面這個值則要設置為Pragma。
HTTP1.1中啟用Cache-Control 來控制頁面的緩存與否,這里介紹幾個常用的參數:
no-cache,瀏覽器和緩存伺服器都不應該緩存頁面信息;
public,瀏覽器和緩存伺服器都可以緩存頁面信息;
no-store,請求和響應的信息都不應該被存儲在對方的磁碟系統中;
must-revalidate,對於客戶機的每次請求,代理伺服器必須想伺服器驗證緩存是否過時;
max-age=xxx,s-max-age=xxx,替代Expires,表示應該在xxx秒後認為頁面過時,後者指示代理伺服器中緩存(通常稱為共享緩存)的頁面過期時間。(不過我試了好多次,這個選項一直沒法實現,希望有人能補充!)
通常我們不需要緩存頁面時設置該值為"no-cache,no-store,must-revalidate"(分三行代碼設置);需要緩存頁面信息時則設置該值為"public,max-age,s-max-age"。
Last-Modified只頁面的最後生成時間,GMT格式;
Expires過時期限值,GMT格式,指瀏覽器或緩存伺服器在該時間點後必須從真正的伺服器中獲取新的頁面信息;
上面兩個值在JSP中設置值為字元型的GMT格式,無法生效,設置long類型才生效;
最後來看一下JSP或Servlet中如何設置緩存控制信息的代碼:
Java代碼
//本頁面允許在瀏覽器端或緩存伺服器中緩存,時限為10秒。
java.util.Date date = new java.util.Date();
response.setDateHeader("Last-Modified",date.getTime());
response.setDateHeader("Expires",date.getTime()+10000);

response.setHeader("Cache-Control", "public");
response.setHeader("Pragma", "Pragma");
Java代碼
//不允許瀏覽器端或緩存伺服器緩存當前頁面信息。
response.setHeader( "Pragma", "no-cache" );
response.setDateHeader("Expires", 0);

response.addHeader( "Cache-Control", "no-cache" );
response.addHeader( "Cache-Control", "no-store" );
response.addHeader( "Cache-Control", "must-revalidate" );
如果HTML頁面信息中包括了Expires頭信息,則其相關的緩存機制不再處理該頁面,而是安裝頁面的緩存控制要求來處理。所以做了上述工作後,Squid無需做任何配置上的修改(指Squid的refresh_pattern指令不處理這些頁面 )。
下面說一下Squid緩存一些靜態資源的一些原理,Squid通過refresh_pattern指令來控制用戶請求是否命中。 "Squid中文權威指南"文章中描述Squid的refresh_pattern指令一段文章讀起來非常的拗口,就是LM_factor比率的演算法,這個演算法的概念翻譯的比較模糊,網路上傳來傳去的,感覺都是搞不清楚,後來參考"OReilly - Squid The Definitive Guide.chm"英文原文,總算明白過來 。
英文原文應用代碼
Responses that fall between the minimum and maximum are subject to Squid's
last-modified factor (LM-factor) algorithm. For such responses, Squid calculates
the response age and the LM-factor and compares it to the percent value. The
response age is simply the amount of time passed since the origin server
generated, or last validated, the response. The resource age is the difference
between the Last-Modified and Date headers. The LM-factor is the ratio of the
response age to the resource age.
LM-factor的定義是(response age)/(the resource age).
其中response age是指HTTP頭信息中的age信息。
resource age是指HTTP頭信息中的Date值減去Last-Modified的值轉化為秒的值。
各位可以通過curl命令(Linux下自帶命令)來參看一個資源返回回來的HTTP頭詳細信息,如下面這樣:
curl -I
經過試驗,這個演算法是正確的,同時這里要提醒一下,特別是對一些HTML類型的資源,max值不要設置的太大,如果設置的太大的話,有可能修改的文檔信息需要非常長的時間才能得到更新,因為LM-factor參數值是變化的,越來越大,分母變大的結果就是比率越來越小,總是小於我們設定的比率,導致需要max來控制頁面刷新。

㈡ H-ui.admin jsp頁面如何清除當前頁面數據

JSP清除頁面緩存常用方法。分享給大家供大家參考,具體如下:

一、清除頁面緩存

在jsp頁里

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

在html頁里:

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="0">

二、清除cookie

<%
Cookie killMyCookie = new Cookie("mycookie", null);
killMyCookie.setMaxAge(0);
killMyCookie.setPath("/");
response.addCookie(killMyCookie);
%>

三、清除session

清除session方法

<%@ page language="java" %>
<%
session.invalidate();
%>

在頁面關閉時清除session,需要捕獲windows.onclose事件,再調用清除session方法

補充:如何使用 JavaScript 代碼清除緩存?

如果在伺服器級不能生成隨機數,您可以使用 JavaScript 代碼在客戶端(瀏覽器)級生成一個字元串。以下示例圖解說明如何使用標准圖像代碼或 Iframe/JavaScript 代碼執行緩存清除。

這些僅為示例。如果要使用該代碼,請為特定 HTML 代碼對示例作相應調整。您必須將實際代碼粘貼到這些示例中的相應位置。

標准圖像代碼示例:

<SCRIPT LANGUAGE="JavaScript">
<!== hide from non-JavaScript browsers
var axel = Math.random() + "";
var num = axel * 1000000000000000000;
document.writeln('<A HREFwww.cdccgs.com?s/jump/N409.somesite/B470;sz=468x60;ord='+ num +'?"><IMG SRCwww.cdccgs.com?s/ad/N409.somesite/B470;sz=468x60;ord='+ num +'?" BORDER=0 WIDTH=468 HEIGHT=60 ALT="Click Here!"> Click Here!</A>');
// end hide from browsers ==>
</SCRIPT>
<NOSCRIPT>
<A HREFwww.cdccgs.com?s/jump/N409.somesite/B470;sz=468x60;ord=[timestamp]?">
<IMG SRCwww.cdccgs.com?s/ad/N409.somesite/B470;sz=468x60;ord=[timestamp]?" BORDER=0 WIDTH=468 HEIGHT=60 ALT="Click Here!"> Click Here!</A>
</NOSCRIPT>

Iframe/JavaScript 代碼示例:

<SCRIPT LANGUAGE="JavaScript">
<!== hide from non-JavaScript browsers
var axel = Math.random() + "";
var num = axel * 1000000000000000000;
document.writeln('<IFRAME SRCwww.cdccgs.com?s/adi/N409.somesite/B470;sz=468x60;ord='+ num +'?" WIDTH=470 HEIGHT=62 MARGINWIDTH=0 MARGINHEIGHT=0HSPACE=0 VSPACE=0 FRAMEBORDER=0 SCROLLING=no BORDERCOLOR="#000000">');
document.writeln('<SCR'+'IPT language="JavaScript1.1" SRCs/B470;abr=!ie;sz=468x60;ord='+ num +'?"></SCR'+'IPT></IFRAME>');
// end hide from browsers ==>
</script>
<noscript>
<A HREFwww.cdccgs.com?s/jump/N409.somesite/B470;abr=!ie4;abr=!ie5;sz=468x60;ord=?">
<IMG SRCwww.cdccgs.com?s/ad/N409.somesite/B470;abr=!ie4;abr=!ie5;sz=468x60;ord=?" BORDER=0 WIDTH=468 HEIGHT=60 ALT="Click Here!"> Click Here!</A>
<noscript>

希望本文所述對大家JSP程序設計有所幫助。

㈢ 如何清除jsp頁面緩存啊

你用的可能是ajax吧,那個在URL後加一個隨機變動的參數值;比如:url="地址"+"&num="+Math.random()或者是"date="+new Date();

㈣ 怎樣才能清除掉Tomcat運行jsp時緩存

呵呵, 在jsp頁面中加代碼:
<%
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");
response.setDateHeader("Expires", -1);
response.setDateHeader("max-age", 0);
%>

㈤ jsp 頁面緩存問題

你好,這個可以在<% %>里的最後來這樣的一句代碼out.println("<script>window.location='"+當前頁.jsp+"');</script>");

表示在圖片重寫後,頁面執行刷新,這個是可以手動控制的

㈥ Jsp中如何讓客戶端不緩存頁面

熱點內容
看linux版本 發布:2025-01-20 04:40:37 瀏覽:19
php獲取調用的方法 發布:2025-01-20 04:25:45 瀏覽:459
SMPT郵箱伺服器地址 發布:2025-01-20 04:04:16 瀏覽:663
抖影工廠為什麼安卓手機用不了 發布:2025-01-20 04:00:05 瀏覽:386
我的世界網易版怎麼進朋友伺服器 發布:2025-01-20 03:50:10 瀏覽:685
phpsession跳轉頁面跳轉 發布:2025-01-20 03:47:20 瀏覽:541
深圳解壓工廠 發布:2025-01-20 03:41:44 瀏覽:690
linux字體查看 發布:2025-01-20 03:41:30 瀏覽:742
pythonextendor 發布:2025-01-20 03:40:11 瀏覽:200
為什麼安卓手機儲存越來越少 發布:2025-01-20 03:40:07 瀏覽:925