CSS、JS、および画像の有効期限ヘッダーを設定するにはどうすればよいですか?


38

最近、firebugのpagespeedアドオンを使用してWebサイトを分析しました。CSS、JS、および画像ファイルに有効期限を設定することを提案しました。

私はこれをどのように行うのでしょうか?

回答:


37

Apache構成を更新して、コア構成の一部として以下のディレクティブを含めます

# 
# associate .js with "text/javascript" type (if not present in mime.conf)
# 
AddType text/javascript .js

# 
# configure mod_expires
# 
# URL: http://httpd.apache.org/docs/2.2/mod/mod_expires.html
# 
<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault "access plus 1 seconds"
    ExpiresByType image/x-icon "access plus 2692000 seconds"
    ExpiresByType image/jpeg "access plus 2692000 seconds"
    ExpiresByType image/png "access plus 2692000 seconds"
    ExpiresByType image/gif "access plus 2692000 seconds"
    ExpiresByType application/x-shockwave-flash "access plus 2692000 seconds"
    ExpiresByType text/css "access plus 2692000 seconds"
    ExpiresByType text/javascript "access plus 2692000 seconds"
    ExpiresByType application/x-javascript "access plus 2692000 seconds"
    ExpiresByType text/html "access plus 600 seconds"
    ExpiresByType application/xhtml+xml "access plus 600 seconds"
</IfModule>

# 
# configure mod_headers
# 
# URL: http://httpd.apache.org/docs/2.2/mod/mod_headers.html
# 
<IfModule mod_headers.c>
    <FilesMatch "\\.(ico|jpe?g|png|gif|swf|css|js)$">
        Header set Cache-Control "max-age=2692000, public"
    </FilesMatch>
    <FilesMatch "\\.(x?html?|php)$">
        Header set Cache-Control "max-age=600, private, must-revalidate"
    </FilesMatch>
    Header unset ETag
    Header unset Last-Modified
</IfModule>

私は私の.htaccessファイルにそれを置くとき、私は500内部サーバーエラーを取得する
KoolKabin

Apacheセットアップは、上記のすべてのオプションをサポートしていない場合があります。この問題を解決するために、この回答をすぐに更新します。
ジョンコンデ

私のDrupalには、www.example.com / misc / jquery.js?v = 1.4.4またはwww.example.com/sites/all/modules/nice_menus/css/nice_menus.css?mtu293のようなjavascript / css参照が含まれています。そのようなファイルでは動作しないようです。今日の時点で更新されていますか?
-AgA

2
@JohnCondeなぜ期限切れとヘッダーの両方ですか?また、たとえばイメージやcssを更新する場合、ファイルの名前を変更する必要がありますか?または、CSSファイルの場合、バージョン管理は機能します:test.css?123?
14:01に上昇

14

これをhtaccessに入れることができます:

<FilesMatch "(?i)^.*\.(ico|flv|jpg|jpeg|png|gif|js|css)$">
ExpiresActive On
ExpiresDefault A2592000
</FilesMatch>

これらの拡張子(ico、flv、jpgなど)を持つファイルを対象とし、Expiresヘッダーをアクセス時間(A)+ 30日(2592000秒)に設定します。アクセスできる場合は、サーバーレベルでこれを追加することもできます。


2

それはホストとこれらのサーバーの方法に依存します。オプション1)サーバーを制御する場合は、応答に有効期限ヘッダーを追加するようにApacheを作成しますそれらをサーバー

これらのヒントは推奨できるが、絶対的な真実ではないことに留意してください。彼らはあなたのウェブサイトをスピードアップするよりもあなたに帯域幅を節約するためのものです。したがって、サイトへのトラフィックが少ない場合、これについてあまり心配する必要はありません。


オプション2を使用しています。これらのヘッダーをスクリプトから設定するにはどうすればよいですか。スクリプトはphpを意味しますか、それともどれを意味しますか?
KoolKabin

stackoverflow.com/questions/2185449/を確認できます。これはpythonの例ですが、プログラミングに精通していれば、アイデアが得られると思います。phpでは、headers()を使用する必要があります。ただし、この場合、すべての「静的」ファイルをスクリプト経由で提供する必要があり、CPUクォータが増加することに注意してください。さて、3番目のオプションがあることがわかりました。これらのファイルにはCDNを使用します。
イリアンイリエフ

2

Lightspeed Web Serverでのセットアップの有効期限切れ

管理コンソールにログインし、>サーバー->一般->有効期限設定->タイプ別有効期限

以下を追加します。

text/css=A604800, text/javascript=A604800, application/javascript=A604800, application/x-javascript=A604800, application/x-shockwave-flash=A604800, image/gif=A604800, image/jpg=A604800, image/jpeg=A604800, image/png=A604800, image/ico=A604800, image/icon=A604800

604800は有効期限の秒数で、168時間(7日間)から必要に応じて適切です。さらに、Light Speed Serverは、次の行を追加する必要があるhtaccessを使用します。

ExpiresActive On

または、管理コンソールにアクセスできない場合は、次の.htaccessファイルを試してください。

  ExpiresByType image/png A604800
  ExpiresByType image/gif A604800
  ExpiresByType image/jpg A604800
  ExpiresByType image/jpeg A604800
  ExpiresByType text/javascript A604800
  ExpiresByType application/x-javascript A604800
  ExpiresByType text/css A604800
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.