web-dev-qa-db-ja.com

HTTPヘッダーを設定する方法(キャッシュ制御用)

自分のサイトのブラウザキャッシュを有効にする方法このようにヘッダのどこかにcache-control:publicを置くだけですか?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
Cache-Control:public;
>

最新版のXAMPP上で開発している最新版のPHPを使用しています。

220
andrew

HTMLでキャッシュ制御を使用するには、 メタタグ を使用します。

<meta http-equiv="Cache-control" content="public">

内容フィールドの値は、以下の4つの値のうちの1つとして定義されます。

Cache-Controlヘッダーに関するいくつかの情報は次のとおりです。

HTTP 1.1許容値= PUBLIC |プライベート| NO-CACHE |ストアなし。

パブリック - パブリック共有キャッシュにキャッシュすることができます。
プライベート - プライベートキャッシュにのみキャッシュできます。
キャッシュなし - キャッシュできません。
No-Store - キャッシュはできますがアーカイブはできません。

ディレクティブCACHE-CONTROL:NO-CACHEは、キャッシュされた情報を使用せず、代わりにリクエストをオリジンサーバーに転送するように指示します。この指令はPRAGMA:NO-CACHEと同じ意味を持ちます。

クライアントSHOULDは、HTTP/1.1に準拠していることが知られていないサーバーにキャッシュなし要求が送信された場合、PRAGMA:NO-CACHEとCACHE-CONTROL:NO-CACHEの両方を含みます。 EXPIRESも参照してください。

注意:ブラウザではなくプロキシに情報をキャッシュする可能性があるMETAステートメントよりもHTTPでキャッシュコマンドを指定する方が良い場合があります。

184
Codemwnci

を使ってPHP にヘッダを設定できます。

<?php
  //set headers to NOT cache a page
  header("Cache-Control: no-cache, must-revalidate"); //HTTP 1.1
  header("Pragma: no-cache"); //HTTP 1.0
  header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past

  //or, if you DO want a file to cache, use:
  header("Cache-Control: max-age=2592000"); //30days (60sec * 60min * 24hours * 30days)

?>

使用される正確なヘッダはあなたのニーズに依存するでしょう(そして HTTP 1.0 そして /HTTP 1.1 をサポートする必要があるなら)

125
scunliffe

私が書いたように( http://www.williamferreira.net/blog/2011/10/04/controle-de-cache-Apache/ に)、.htaccesファイルを使うのが最善です。ただし、コンテンツをキャッシュに残す時間には注意してください。

つかいます:

<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>

604800 = 7日

シモンズ:これは任意のヘッダをリセットするために使用することができます

40
William

http://www.askapache.com/htaccess/Apache-speed-cache-control.html のページには、次のようなものを使用することが推奨されています。

キャッシュ制御ヘッダを追加する

これはあなたのルートの.htaccessファイルに入っていますが、あなたがhttpd.confにアクセスできるのであればもっと良いです。

このコードは、FilesMatchディレクティブとHeaderディレクティブを使用して、特定のファイルにキャッシュ制御ヘッダーを追加します。

# 480 weeks
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
Header set Cache-Control "max-age=290304000, public"
</FilesMatch>
29
angry kiwi

これは私が私の実際のウェブサイトで使用した中で最高の.htaccessです。

<ifModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-javascript.*
mod_gzip_item_exclude mime ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>

##Tweaks##
Header set X-Frame-Options SAMEORIGIN

## EXPIRES CACHING ##
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType text/html "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 1 month"
</IfModule>
## EXPIRES CACHING ##

<IfModule mod_headers.c>
    Header set Connection keep-alive
    <filesmatch "\.(ico|flv|gif|swf|eot|woff|otf|ttf|svg)$">
        Header set Cache-Control "max-age=2592000, public"
    </filesmatch>
    <filesmatch "\.(jpg|jpeg|png)$">
        Header set Cache-Control "max-age=1209600, public"
    </filesmatch>
    # css and js should use private for proxy caching https://developers.google.com/speed/docs/best-practices/caching#LeverageProxyCaching
    <filesmatch "\.(css)$">
        Header set Cache-Control "max-age=31536000, private"
    </filesmatch>
    <filesmatch "\.(js)$">
        Header set Cache-Control "max-age=1209600, private"
    </filesmatch>
    <filesMatch "\.(x?html?|php)$">
        Header set Cache-Control "max-age=600, private, must-revalidate"
      </filesMatch>
</IfModule>
15
Erich García

Apacheサーバーの場合、ExpiresおよびCache-Controlヘッダーの設定については mod_expires を確認してください。

あるいは、 Header ディレクティブを使用して独自にCache-Controlを追加することもできます。

Header set Cache-Control "max-age=290304000, public"
13

メタキャッシュ制御タグを使用すると、Web発行者はページをキャッシュでどのように処理するかを定義できます。これには、キャッシュ可能なもの、キャッシュに格納できるもの、有効期限メカニズムの変更、および再検証とリロードの制御を宣言する指令が含まれています。

許容値は次のとおりです。

パブリック - パブリック共有キャッシュにキャッシュされる可能性があります
プライベート - プライベートキャッシュにのみキャッシュできます
キャッシュなし - キャッシュできません
no-Store - キャッシュされているがアーカイブされていない可能性があります

大文字と小文字の区別に注意してください。 Webページのソースに次のメタタグを追加します。タグの最後のスペルの違いは、 "/> = xml"または "> = html"のどちらかを使用することです。

    <meta http-equiv="Cache-control" content="public">
    <meta http-equiv="Cache-control" content="private">
    <meta http-equiv="Cache-control" content="no-cache">
    <meta http-equiv="Cache-control" content="no-store">

ソース - > メタタグ

5
Karthik N G

OWASPは以下を推奨します。

可能な限り、cache-control HTTPヘッダーがno-cache、no-store、must-revalidate、privateに設定されていることを確認してください。プラグマHTTPヘッダーがno-cacheに設定されていること。

<IfModule mod_headers.c>
    Header set Cache-Control "private, no-cache, no-store, proxy-revalidate, no-transform"
    Header set Pragma "no-cache"
</IfModule>
5
Won Jun Bae