這篇文章主要介紹了頁面的快取與不緩存設定及html頁面中meta的作用的相關資料,需要的朋友可以參考下
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,對於客戶機的每次請求,代理伺服器必須想伺服器驗證快取是否過時;
Last- Modified只頁面的最後生成時間,GMT格式;
Expires過時期限值,GMT格式,指瀏覽器或快取伺服器在該時間點後必須從真正的伺服器中取得新的頁面資訊;
上面兩個值在JSP中設定值為字元型的GMT格式,無法生效,設定long類型才生效;
下面是一個測試範例:
package com.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ServletA extends HttpServlet { @Override public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); //servlet页面默认是不缓存的 //本页面允许在浏览器端或缓存服务器中缓存,时限为秒。 //秒之内重新进入该页面的话不会进入该servlet的 java.util.Date date = new java.util.Date(); response.setDateHeader("Last-Modified",date.getTime()); //Last-Modified:页面的最后生成时间 response.setDateHeader("Expires",date.getTime()+); //Expires:过时期限值 response.setHeader("Cache-Control", "public"); //Cache-Control来控制页面的缓存与否,public:浏览器和缓存服务器都可以缓存页面信息; response.setHeader("Pragma", "Pragma"); //Pragma:设置页面是否缓存,为Pragma则缓存,no-cache则不缓存 //不允许浏览器端或缓存服务器缓存当前页面信息。 /*response.setHeader( "Pragma", "no-cache" ); response.setDateHeader("Expires", ); response.addHeader( "Cache-Control", "no-cache" );//浏览器和缓存服务器都不应该缓存页面信息 response.addHeader( "Cache-Control", "no-store" );//请求和响应的信息都不应该被存储在对方的磁盘系统中; response.addHeader( "Cache-Control", "must-revalidate" );*///于客户机的每次请求,代理服务器必须想服务器验证缓存是否过时; System.out.println("进入了servlet"); response.getWriter().write("欢迎光临我的主页"); } }
如果需要在html頁面上設定不緩存,這在
標籤中加入如下語句:<meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="">
##附:html頁面中meta的作用
meta是用來在HTML文件中模擬HTTP協定的回應頭封包。 meta 標籤用於網頁的與中,meta 標籤的用途很多。 meta 的屬性有兩種:name和http-equiv。 name屬性主要用於描述網頁,對應於content(網頁內容),以便於搜尋引擎機器人尋找、分類(目前幾乎所有的搜尋引擎都使用網路機器人自動尋找meta值來為網頁分類)。這其中最重要的是description(網站在搜尋引擎上的描述)和keywords(分類關鍵字),所以應該在每頁加上一個meta值。比較常用的有以下幾個:name 屬性
1、用以說明產生工具(如Microsoft FrontPage 4.0)等; 2、向搜尋引擎說明你的網頁的關鍵字; 3、< meta name="DEscription" contect="">告訴搜尋引擎你的網站的主要內容; 4、告訴搜尋引擎你的網站的製作的作者; 5、#其中的屬性說明如下:
設定為all:檔案將被檢索,且頁面上的連結可以被查詢; 設定為none:檔案將不會被檢索,且頁面上的連結不可以被查詢; 設定為index:文件將被檢索; 設定為follow:頁面上的連結可以被查詢; 設定為noindex:文件將不會被檢索,但頁面上的連結可以被查詢; 設定為nofollow:文件將不會被檢索,頁面上的連結可以被查詢。http-equiv屬性
1、和用以說明主頁製作所使用的文字以及語言;
又如英文是ISO-8859-1字符集,還有BIG5、utf-8、shift-Jis、Euc、Koi8 -2等字元集;
2、定時讓網頁在指定的時間n內,跳前往頁面http://yourlink;
3、可以用來設定網頁的到期時間,一旦過期則必須到伺服器上重新呼叫。需要注意的是必須使用GMT時間格式;
4、是用來設定禁止瀏覽器從本機的快取中調閱頁面內容,設定後一旦離開網頁就無法從Cache中再調出;
5、cookie設定,如果網頁過期,盤的cookie將被刪除。需要注意的也是必須使用GMT時間格式;
6、網頁等級評定,在IE的internet選項中有一項內容設置,可以防止瀏覽一些受限制的網站,而網站的限制等級就是透過meta屬性來設定的;
7、強制頁面在目前視窗中以獨立頁面顯示,可以防止自己的網頁被別人當作一個frame頁呼叫;
8、和設定進入和離開頁面時的特殊效果,這個功能即FrontPage中的「格式/網頁過渡”,不過所加的頁面不能夠是一個frame頁面。
以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!
相關推薦:
Html的a標籤中href和onclick用法區別以及優先等級
以上是html頁面中meta的作用以及頁面的快取與不快取設定的解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!