1

我正在尝试images, js and css通过在 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 项目。

4

2 回答 2

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 重写

于 2013-08-26T20:23:25.863 回答
0

首先

您应该发布您拥有的所有url 重写配置。

第二

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

url 重写 4.0 版

url 重写 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,因此在我的情况下,尝试以最少的添加量来完成,但是,只有当我将它添加到三个地方时它才起作用(没有显示我的所有规则,但你得到了这个想法:) )

我也这样做了它的更好的方法

使用 APACHE 配置

于 2018-01-14T17:12:52.453 回答