7

私のPHPコード:

$expires_date = date('D, j F Y H:i:s', strtotime('now + 10 years')) . ' GMT';           
header("Expires: $expires_date");
header('Content-type: text/javascript');

echo 'hello world';

応答ヘッダーを確認すると、次のように表示されます。

Expires:Thu, 01 Jan 1970 00:00:00 GMT

私は何を間違っていますか?

アップデート:

ただ実験していたのですが、 Expires の設定を解除することさえできないようですheader_remove('Expires');。まだ1970年の日付が見えます。

アップデート:

私の応答ヘッダー:

Cache-Control:private
Connection:Keep-Alive
Content-Encoding:gzip
Content-Length:74
Content-Type:text/javascript
Date:Wed, 17 Oct 2012 22:40:45 GMT
Expires:Thu, 01 Jan 1970 00:00:00 GMT
Keep-Alive:timeout=5, max=98
Server:Apache/2.2.21 (Win32) PHP/5.3.9
Vary:Accept-Encoding
X-Powered-By:PHP/5.3.9
4

3 に答える 3

5

あなたのhtaccessファイルを見てください:

<FilesMatch "\.(htm|html|php)$">
        Header set Expires "Thu, 01 Jan 1970 00:00:00 GMT"

        # TODO: Google.com's setting are the following
        # Expires -1
        # Cache-Control private, max-age=0
</FilesMatch>

スクリプトが.phpファイルであるためFilesMatch .php、.htaccessContent-Type:text/javascriptルールをオーバーライドしているように見えますが、PHP はヘッダーを期限切れにします。

.htaccess でこのヘッダーの有効期限が切れるのをコメントアウトし、PHP ヘッダー +10 年が期限切れになるかどうかを確認します。

于 2012-10-26T06:32:12.267 に答える
2

フォーマット エラーがあります。

  • dの代わりに使用j
  • Mの代わりに使用F
  • gmdate()の代わりに使用date()

ヘッダー定義から(14.21):

その使用例は、

 Expires: Thu, 01 Dec 1994 16:00:00 GMT

 Note: if a response includes a Cache-Control field with the max-
 age directive (see section 14.9.3), that directive overrides the
 Expires field.

HTTP/1.1 クライアントとキャッシュは、他の無効な日付形式、特に値「0」を含むものを、以前と同様に処理する必要があります (つまり、「すでに期限切れ」)。

応答を「すでに期限切れ」とマークするために、オリジン サーバーは、Date ヘッダー値と等しい Expires 日付を送信します。(セクション 13.2.4 の有効期限計算の規則を参照してください。)

応答を「無期限」としてマークするために、オリジン サーバーは、応答が送信されてから約 1 年の有効期限を送信します。HTTP/1.1 サーバーは、1 年以上先の Expires 日付を送信すべきではありません。

したがって、1 年以上先の Expires を送信しないでください。代わりに、無期限であることを示すには、ヘッダーを省略するか、 を使用しますExpires: -1

于 2012-10-28T00:06:37.763 に答える
1

使用してみてください:

// ヘッダーを再検証するには

header("Cache-Control: no-cache, must-revalidate");

// 次に、有効期限を設定します

header("Expires: Sat, 26 Jul 2011 05:20:00 GMT"); // Date to expire

それは前に私の問題を修正しました

于 2012-11-01T09:20:25.323 に答える