2017-03-02 9 views
0

私のサイトのすべてのJSを1週間キャッシュするように設定しました。ただし、より高い頻度でリフレッシュする必要のある特定のファイルがあります。したがって、私は私の.htaccessファイルで例外を達成するためにFilesMatchを使用していますhtaccessの変更ブラウザに反映されないヘッダーが期限切れになる

<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 は、ドキュメントルート(/)です。ただし、ブラウザがこの例外を尊重していないようだし、問題のファイルのために次のヘッダー与える:私の.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秒は、すべてのJS資産のデフォルトは1週間ですですが、172800秒(2日間)にする必要があります。私は間違って何をしていますか?また、最新のヘッダーに更新するようブラウザに指示する方法はありますか? Operaは31536000秒(1年)を返します。これは私が最近JSの全員に1週間に変更したものです!

更新:私は<IfModule mod_expires.c>内で最初にそれを添加し、次いで、その直後と同じエラーを毎回経験

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

次のコードを使用するには、500私のサイトがエラーで完全に破壊する原因になっています。

答えて

0

私の最初の傾向は、特定のファイルの上書きを達成するために、ディレクトリターゲットブロック内の '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

関連する問題