must-revalidate,對於客戶機的每次請求,Proxy 伺服器必須想伺服器驗證緩衝是否過時;Last-Modified只頁面的最後產生時間,GMT格式;
Expires過時期限值,GMT格式,指瀏覽器或快取服務器在該時間點後必須從真正的伺服器中擷取新的頁面資訊;
上面兩個值在JSP中設定值為字元型的GMT格式,無法生效,設定long類型才生效;
下面是設定不緩衝的filter代碼:
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 {@Overridepublic void destroy() {}@Overridepublic 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" );*///於客戶機的每次請求,Proxy 伺服器必須想伺服器驗證緩衝是否過時;}@Overridepublic void init(FilterConfig arg0) throws ServletException {}}
下面是設定緩衝的過濾器檔案
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 {@Overridepublic void destroy() {}@Overridepublic 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則不緩衝 */}@Overridepublic void init(FilterConfig arg0) throws ServletException {}}上面的filter檔案生效需要在web.xml中配置,根據配置的路徑來進行過濾。