JAVAEE Filter 過濾器設置能否緩存實例詳解。本站提示廣大學習愛好者:(JAVAEE Filter 過濾器設置能否緩存實例詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是JAVAEE Filter 過濾器設置能否緩存實例詳解正文
在網頁中,每次的客戶端拜訪辦事器,有部門不消反復要求,若有些圖片,視頻等就沒有需要每次都要求,如許會讓辦事器增年夜任務量。為了避免如許,我們采取過濾器來設置客戶端是都緩存。
頁面的緩存與不緩存設置及html頁面中meta的感化
HTTP1.1中啟用Cache-Control 來掌握頁面的緩存與否,這裡引見幾個經常使用的參數:
no-cache,閱讀器懈弛存辦事器都不該該緩存頁面信息;
public,閱讀器懈弛存辦事器都可以緩存頁面信息;
no-store,要求和呼應的信息都不該該被存儲在對方的磁盤體系中;
must-revalidate,關於客戶機的每次要求,署理辦事器必需想辦事器驗證緩存能否過時;
Last-Modified只頁面的最初生成時光,GMT格局;
Expires過時代限值,GMT格局,指閱讀器或緩存辦事器在該時光點後必需從真實的辦事器中獲得新的頁面信息;
下面兩個值在JSP中設置值為字符型的GMT格局,沒法失效,設置long類型才失效;
上面是設置不緩存的filter代碼:
<span >package cn.hncu.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class CacheFilter implements Filter { @Override public void destroy() { }</span> <span > @Override public void doFilter(ServletRequest request , ServletResponse response, FilterChain chain) throws IOException, ServletException { // 過濾器有許多感化,這個用來設置客戶端能否設置緩存的成績,我們這裡采取response告訴客戶端設置不緩存 chain.doFilter(request, response); HttpServletResponse res=(HttpServletResponse) response; res.setHeader("expries", "-1"); res.setHeader("pragma", "no-cache"); res.setHeader("cache-control", "no-cache"); /*下面的曾經可以設置不緩存,然則還可以設置周全一點: //不許可閱讀器端或緩存辦事器緩存以後頁面信息。 /* response.setHeader( "Pragma", "no-cache" ); response.setDateHeader("Expires", "-1"); response.addHeader( "Cache-Control", "no-cache" );//閱讀器懈弛存辦事器都不該該緩存頁面信息 response.addHeader( "Cache-Control", "no-store" );//要求和呼應的信息都不該該被存儲在對方的磁盤 response.addHeader( "Cache-Control", "must-revalidate" );*///於客戶機的每次要求,署理辦事器必需想辦事器驗證緩存能否過時; } @Override public void init(FilterConfig arg0) throws ServletException { } }</span><span > </span>
上面是設置緩存的過濾器文件
package cn.hncu.filter; import java.io.IOException; import java.util.Date; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletResponse; public class CacheFilter2 implements Filter { @Override public void destroy() { } @Override public void doFilter(ServletRequest request , ServletResponse response, FilterChain chain) throws IOException, ServletException { // 過濾器有許多感化,這個用來設置客戶端能否設置緩存的成績,我們這裡采取response告訴客戶端設置緩存 //這裡設置緩存1天,以完成讓圖片、視頻類的資本(在過濾器傍邊設置裝備擺設響應的攔阻途徑)請求客戶閱讀器緩存1天) //攔阻途徑在web.xml中設置裝備擺設 chain.doFilter(request, response);//先輩行要求,前往也會從過這裡,前往停止攔阻 HttpServletResponse res=(HttpServletResponse) response; Date d =new Date(); Long time=d.getTime()+60*60*24; // res.setHeader("expries", ""+time);//如許就設置緩存一天 res.setDateHeader("expries", time);//和下面一句一樣 /* * Date date = new Date(); response.setDateHeader("Last-Modified",date.getTime()); //Last-Modified:頁面的最初生成時光 response.setDateHeader("Expires",date.getTime()+60*60*24); //Expires:過時代限值 response.setHeader("Cache-Control", "public"); //Cache-Control來掌握頁面的緩存與否,public:閱讀器懈弛存辦事器都可以緩存頁面信息; response.setHeader("Pragma", "Pragma"); //Pragma:設置頁面能否緩存,為Pragma則緩存,no-cache則不緩存 */ } @Override public void init(FilterConfig arg0) throws ServletException { }
須要留意:下面的filter文件失效須要在web.xml中設置裝備擺設,依據設置裝備擺設的途徑來停止過濾。
以上所述是小編給年夜家引見的JAVAEE Filter 過濾器設置能否緩存實例詳解的相干常識,願望對年夜家有所贊助,假如年夜家有任何疑問請給我留言,小編會實時答復年夜家的。在此也異常感激年夜家對網站的支撐!