2013-08-26 103 views
1

我試圖通過在urlrewrite中配置緩存設置來緩存images, js and css用Tuckey進行緩存UrlRewrite

我的js/css文件正在按照預期緩存,但圖像不會。儘管存在各種配置組合,但我仍無法看到圖像的標頭(Expires)。 下面是urlrewrite.xml:

<rule> 
    <from>^.*\.(js|css|jpeg|jpg|png)$</from> 
    <set type="expires">2 years</set> 
</rule> 

配置這裏的目錄(和文件)看起來怎麼樣

/html/images/foo.jpg 
/html/js/bar.js 
/html/css/xyz.css 
/WEB-INF/urlrewrite.xml 
/WEB-INF/web.xml 

我已經獵殺配置無處不在,我能想到的服務器上,並沒有具體的配置圖片。

我應該在哪裏看得更遠?任何幫助,將不勝感激。謝謝。 PS:我有一個struts/spring項目。

回答

1

你在哪個應用服務器上部署tomcat? 如果是

<filter> 
     <filter-name>ExpiresFilter</filter-name> 
     <filter-class>org.apache.catalina.filters.ExpiresFilter</filter-class> 
     <init-param> 
      <param-name>ExpiresByType image</param-name> 
      <param-value>access plus 100000 minutes</param-value> 
     </init-param> 
     <init-param> 
      <param-name>ExpiresByType text/css</param-name> 
      <param-value>access plus 100000 minutes</param-value> 
     </init-param> 
     <init-param> 
      <param-name>ExpiresByType application/javascript</param-name> 
      <param-value>access plus 10000 minutes</param-value> 
     </init-param> 
    </filter> 
    <filter-mapping> 
     <filter-name>ExpiresFilter</filter-name> 
     <url-pattern>/*</url-pattern> 
     <dispatcher>REQUEST</dispatcher> 
    </filter-mapping> 

使用該URL重寫不需要

+0

謝謝你的提示。我然而,更感興趣的是找出什麼是我在配置丟失。如果我無法弄清楚什麼,我在哪裏搞亂了,我會用這個。 –

0

首先

你應該張貼所有URL重寫配置你。

經常檢查文檔的例子,我沒有看到你嘗試過什麼。

url rewrite version 4.0

url rewrite version 3.0

知道是什麼版本的工作。

最後

這裏是解決方案我沒有和它的工作很好。

在我的情況下,我必須修改的部分是兩個行 在三個地方是的三個。爲什麼繼續閱讀))

<set type="response-header" name="Cache-Control">max-age=290304000</set> 
<set type="expires" name="expires">24 hours</set> 

......

<rule> 
     <from>/images/((?:(?!/).)*)/(.*)$</from> 
     <to encode="true" last="true" qsappend = "true">/files/get.html&#63;file=$2&amp;preset=$1</to> 
     <set type="response-header" name="Cache-Control">max-age=290304000</set> 
     <set type="expires" name="expires">24 hours</set> 
    </rule> 

    <outbound-rule> 
     <from>/images/(.*)/(.*).(jpg|png|jpeg|gif).html</from> 
     <to>/images/$1/$2.$3</to> 
     <set type="response-header" name="Cache-Control">max-age=290304000</set> 
     <set type="expires" name="expires">24 hours</set> 
    </outbound-rule> 

    <rule> 
     <from>/files/original/(.*)$</from> 
     <to encode="true" last="true" qsappend = "true">/files/get.html&#63;file=$1</to> 
     <set type="response-header" name="Cache-Control">max-age=290304000</set> 
     <set type="expires" name="expires">24 hours</set> 
    </rule> 

原因:

根據您爲您的項目設置有規則 並沒有出界和其他的東西;他們會根據你的規則的複雜性和邏輯 重新寫 網址數次所以在我的情況下,試圖用最小的除了做,但,它沒有 工作,只有當我把它添加到三個地方(不顯示我的所有規則但你有這個想法:))

,我沒有這個問題,以及它的更好的方法以及

Using APACHE configuration