java技術研究

          統計

          留言簿(3)

          閱讀排行榜

          評論排行榜

          網頁的緩存

          網頁緩存
          2009-07-09 10:42

          網頁的緩存是由HTTP消息頭中的“Cache-control”來控制的,常見的取值有private、no-cache、max-age、must-revalidate等,默認為private。其作用根據不同的重新瀏覽方式分為以下幾種情況:
          (1) 打開新窗口
          如果指定cache-control的值為private、no-cache、must-revalidate,那么打開新窗口訪問時都會重新訪問服務器。而如果指定了max-age值,那么在此值內的時間里就不會重新訪問服務器,例如:
          Cache-control: max-age=5
          表示當訪問此網頁后的5秒內再次訪問不會去服務器
          (2) 在地址欄回車
          如果值為private或must-revalidate(和網上說的不一樣),則只有第一次訪問時會訪問服務器,以后就不再訪問。如果值為no-cache,那么每次都會訪問。如果值為max-age,則在過期之前不會重復訪問。
          (3) 按后退按扭
          如果值為private、must-revalidate、max-age,則不會重訪問,而如果為no-cache,則每次都重復訪問
          (4) 按刷新按扭
          無論為何值,都會重復訪問


          項目中使用過濾器來設置網頁的緩存
          FilterConfig fc;

              public void doFilter(ServletRequest req, ServletResponse res,
                      FilterChain chain) throws IOException, ServletException {
                  HttpServletResponse response = (HttpServletResponse) res;
                  // set the provided HTTP response parameters
                  for (Enumeration e = fc.getInitParameterNames(); e.hasMoreElements();) {
                      String headerName = (String) e.nextElement();
                      response.addHeader(headerName, fc.getInitParameter(headerName));
                  }
                  // pass the request/response on
                  chain.doFilter(req, response);
              }

          配置文件的配置:
          <filter>
                  <filter-name>NoCache</filter-name>
                  <filter-class>filter.CacheFilter</filter-class>
                  <init-param>
                      <param-name>Cache-Control</param-name>
                      <param-value>no-cache, must-revalidate</param-value>
                  </init-param>
              </filter>
              <filter>
                  <filter-name>CacheForWeek</filter-name>
                  <filter-class>filter.CacheFilter</filter-class>
                  <init-param>
                      <param-name>Cache-Control</param-name>
                      <param-value>max-age=604800</param-value>
                  </init-param>
              </filter>

              <filter-mapping>
                  <filter-name>CacheForWeek</filter-name>
                  <url-pattern>*.js</url-pattern>
              </filter-mapping>
              <filter-mapping>
                  <filter-name>CacheForWeek</filter-name>
                  <url-pattern>*.css</url-pattern>
              </filter-mapping> 
              <filter-mapping>
                  <filter-name>CacheForWeek</filter-name>
                  <url-pattern>*.gif</url-pattern>
              </filter-mapping>

          posted on 2012-04-10 17:54 小秦 閱讀(213) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 库伦旗| 铜陵市| 铁岭县| 南郑县| 天水市| 兴山县| 鄯善县| 宜川县| 呼图壁县| 伊金霍洛旗| 泗洪县| 灵川县| 江都市| 收藏| 绥中县| 台江县| 宜宾市| 怀集县| 阜新| 松原市| 卓尼县| 台江县| 繁昌县| 苏尼特左旗| 闻喜县| 通江县| 临猗县| 濮阳市| 长子县| 南陵县| 黄骅市| 永福县| 衢州市| 广西| 随州市| 阿拉尔市| 中江县| 巴楚县| 榆社县| 漯河市| 新邵县|