Terry.Li-彬

          虛其心,可解天下之問;專其心,可治天下之學(xué);靜其心,可悟天下之理;恒其心,可成天下之業(yè)。

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


          項目中使用過濾器來設(shè)置網(wǎng)頁的緩存
          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> 

          上述設(shè)置保存了1周的緩存。
          posted on 2009-01-05 23:06 禮物 閱讀(989) 評論(0)  編輯  收藏 所屬分類: java
          主站蜘蛛池模板: 霸州市| 山丹县| 基隆市| 买车| 通榆县| 柘荣县| 南阳市| 工布江达县| 江城| 安徽省| 蓬安县| 米泉市| 山阳县| 定边县| 安仁县| 安丘市| 五指山市| 攀枝花市| 大渡口区| 广州市| 宁德市| 成安县| 正定县| 澄江县| 长兴县| 恭城| 东至县| 礼泉县| 盘山县| 垫江县| 拜城县| 浏阳市| 城市| 三门县| 娄底市| 六枝特区| 乳源| 汾阳市| 方正县| 营口市| 绥中县|