【问题标题】:Caching with Tuckey UrlRewrite使用 Tuckey UrlRewrite 进行缓存
【发布时间】:2013-08-26 20:03:28
【问题描述】:

我正在尝试通过在 urlrewrite 中配置缓存设置来缓存 images, js and css

我的 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 项目。

【问题讨论】:

    标签: spring jsp servlets url-rewriting tuckey-urlrewrite-filter


    【解决方案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>
    

    使用此网址重写不需要

    【讨论】:

    • 感谢您的提示。然而,我更感兴趣的是找出我的配置中缺少什么。如果我无法弄清楚我在搞砸什么以及在哪里搞砸了,我会使用它。
    【解决方案2】:

    第一

    你应该发布你所有的 url rewrite 配置。

    第二

    始终检查文档以获取示例,我不知道您尝试了什么。

    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>
    

    原因:

    根据您对项目的设置,有一些规则 还有出界和其他东西;他们可能会重新写 根据您的规则复杂性和逻辑多次访问 url 所以在我的情况下,尝试用最少的添加来做到这一点,但它没有 只有当我将它添加到三个地方时才起作用(没有显示我的所有规则,但你明白了:))

    我也这样做了,它的更好的方法也是如此

    Using APACHE configuration

    【讨论】:

      猜你喜欢
      • 2011-12-21
      • 2023-01-31
      • 2012-12-07
      • 1970-01-01
      • 1970-01-01
      • 2015-04-26
      • 1970-01-01
      • 1970-01-01
      • 2011-12-08
      相关资源
      最近更新 更多