257

サイトのブラウザ キャッシュを有効にする方法を教えてください。このようにヘッダーのどこかに 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 を使用しています。

4

8 に答える 8

220

HTML でキャッシュ コントロールを使用するには、メタ タグを使用します。

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

content フィールドの値は、以下の 4 つの値のいずれかとして定義されます。

Cache-Controlヘッダーに関する一部の情報は次のとおりです。

HTTP 1.1。許可された値 = PUBLIC | プライベート | キャッシュなし | ノーストア。

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

ディレクティブ CACHE-CONTROL:NO-CACHE は、キャッシュされた情報を使用してはならず、代わりにリクエストをオリジン サーバーに転送する必要があることを示します。このディレクティブは、PRAGMA:NO-CACHE と同じセマンティクスを持ちます。

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

注: キャッシュ コマンドは META ステートメントよりも HTTP で指定する方が良い場合があります。META ステートメントでは、ブラウザー以外にも影響を与える可能性がありますが、情報をキャッシュする可能性のあるプロキシやその他の仲介者に影響を与える可能性があります。

于 2010-12-18T21:40:33.370 に答える
145

以下を使用して、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をサポートする必要がある場合) 。

于 2010-12-19T21:25:20.327 に答える
67

私が書いたように、ファイルを使用するのが最善です.htaccess。ただし、コンテンツをキャッシュに残す時間には注意してください。

使用する:

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

ここで: 604800 = 7 日

PS: これは任意のヘッダーのリセットに使用できます

于 2011-10-05T15:55:24.020 に答える
35

http://www.askapache.com/htaccess/apache-speed-cache-control.htmlのページは、次のようなものを使用することを提案しています:

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

これはルートの .htaccess ファイルに入りますが、httpd.conf にアクセスできる場合はそのほうがよいでしょう。

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

# 480 weeks
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
Header set Cache-Control "max-age=290304000, public"
</FilesMatch>
于 2011-05-01T11:28:50.387 に答える
16

Apache サーバーの場合、Expires および Cache-Control ヘッダーを設定するためにmod_expiresを確認する必要があります。

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

Header set Cache-Control "max-age=290304000, public"
于 2010-12-18T22:07:41.040 に答える
5

OWASP は以下を推奨します。

可能な限り、キャッシュ制御 HTTP ヘッダーが no-cache、no-store、must-revalidate、private に設定されていることを確認してください。また、pragma 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>
于 2015-10-22T17:47:14.340 に答える
5

メタ キャッシュ コントロール タグを使用すると、Web 発行者はキャッシュによるページの処理方法を定義できます。それらには、キャッシュ可能であるべきもの、キャッシュによって保存される可能性があるもの、有効期限メカニズムの変更、および再検証と再読み込みの制御を宣言するためのディレクティブが含まれます。

許可される値は次のとおりです。

パブリック - パブリック共有キャッシュにキャッシュされる可能性があります
プライベート - プライベート キャッシュにのみキャッシュされる可能
性があります no-Cache - キャッシュされない可能性があります
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">

ソース - >メタタグ

于 2012-12-05T11:25:03.540 に答える