2017-03-02 77 views
0

我已将我网站上的所有JS设置为缓存一周。但是,我需要以更高的频率刷新特定的文件。因此,我已经使用FilesMatch以实现例外我的.htaccess文件:在浏览器中未反映的htaccess Expires标题中的更改

<IfModule mod_expires.c> 

    ExpiresActive on 
    ExpiresDefault          "access plus 1 month" 

    # CSS 
    ExpiresByType text/css        "access plus 1 year" 

    # Data interchange 
    ExpiresByType application/json      "access plus 0 seconds" 
    ExpiresByType application/xml      "access plus 0 seconds" 
    ExpiresByType text/xml        "access plus 0 seconds" 

    # Favicon (cannot be renamed!) 
    ExpiresByType image/x-icon       "access plus 1 week" 

    # HTML components (HTCs) 
    ExpiresByType text/x-component      "access plus 1 month" 

    # HTML 
    ExpiresByType text/html        "access plus 0 seconds" 

    # JavaScript 
    ExpiresByType text/javascript      "access plus 1 week" 
    ExpiresByType application/javascript    "access plus 1 week" 
    ExpiresByType application/x-javascript    "access plus 1 week" 

    # Manifest files 
    ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds" 
    ExpiresByType text/cache-manifest     "access plus 0 seconds" 

    # Media 
    ExpiresByType audio/ogg        "access plus 1 month" 
    ExpiresByType image/gif        "access plus 1 month" 
    ExpiresByType image/jpeg       "access plus 1 month" 
    ExpiresByType image/jpg       "access plus 1 month" 
    ExpiresByType image/png        "access plus 1 month" 
    ExpiresByType video/mp4        "access plus 1 month" 
    ExpiresByType video/ogg        "access plus 1 month" 
    ExpiresByType video/webm       "access plus 1 month" 

    # Web feeds 
    ExpiresByType application/atom+xml     "access plus 1 hour" 
    ExpiresByType application/rss+xml     "access plus 1 hour" 

    # Web fonts 
    ExpiresByType application/font-woff     "access plus 1 month" 
    ExpiresByType application/vnd.ms-fontobject   "access plus 1 month" 
    ExpiresByType application/x-font-ttf    "access plus 1 month" 
    ExpiresByType font/opentype       "access plus 1 month" 
    ExpiresByType image/svg+xml       "access plus 1 month" 

</IfModule> 
<FilesMatch "^(ga\.js)$"> 
    ExpiresActive on 
    ExpiresDefault "access plus 2 days" 
</FilesMatch> 

例外文件是在/sandboxassets/js/ga.js的.htaccess我一起工作是在文档根目录(/)。但是,浏览器似乎并没有履行这一异常,并提供下列头有问题的文件:

Accept-Ranges:bytes 
Access-Control-Allow-Origin:* 
Age:0 
Cache-Control:max-age=604800 
Content-Encoding:gzip 
Content-Length:11967 
Content-Type:application/javascript 
Date:Thu, 02 Mar 2017 15:03:55 GMT 
Expires:Thu, 09 Mar 2017 15:03:55 GMT 
Last-Modified:Thu, 02 Mar 2017 15:00:01 GMT 
Server:Apache Phusion_Passenger/4.0.10 mod_bwlimited/1.4 mod_fcgid/2.3.9 
Vary:Accept-Encoding,User-Agent 
Via:1.1 varnish-v4 
X-Varnish:18808880 

604800秒在1周这是我的.htaccess中定义的所有JS资产默认但我需要172800秒(2天)。我究竟做错了什么?另外,有什么办法可以告诉浏览器刷新到最新的头文件吗? Opera将返回一个31536000秒(1年),这是我最近更改为1周所有JS的!

更新:使用下面的代码导致我的网站与错误完全打破500:

<Directory "/sandboxassets/js/"> 
    AllowOverride All 
    <FilesMatch "ga\.js$"> 
     Expires A172800 
    </FilesMatch> 
    <FilesMatch "tww\.js$"> 
     Expires A172800 
    </FilesMatch> 
</Directory> 

我第一次加入这里面<IfModule mod_expires.c>,然后紧随其后,每一次经历了同样的错误。

回答

0

我的第一个倾向是,您需要能够使用Directory目标块中的'AllowOverride'来实现特定文件的覆盖。

<Directory "/directory/to/your/file"> 
    AllowOverride All 
    <FilesMatch "\.js$"> 
     Expires A31536000 
    </FilesMatch> 
</Directory> 

来源(S): http://www.websiteoptimization.com/secrets/advanced/caching-example.html

我强烈建议关闭的CloudFlare你排除任何可能性之前做这个测试。

它也可能是有益的答案看看这个问题:https://webmasters.stackexchange.com/questions/9513/htaccess-execution-order-and-priority

我加入了这一点,因为我认为这也有可能,这是一个排序问题。 .htaccess从根开始并在目录中工作。

+0

此代码完全破坏我的网站。我用我使用的确切代码更新了问题。 – TheLearner

+0

呃。对于那个很抱歉。我会四处探索,看看我还能找到什么。 – malodie

相关问题