5

小さなイントラネットサイトの場合、Firefoxによって正しくキャッシュされていない動的(AJAXを含む)ページがあります。単一ページのブラウザキャッシュを無効にする方法はありますか?

これが私が使用しているセットアップです:

  • XAMPPでのApache、Windowsサーバーで実行
  • PHP

明確化

私が主に懸念しているコンテンツは、ページテキストと一部<select>のデフォルトオプションです。そのため、たとえば、一部の画像URLの末尾に乱数を追加することはできません。

アップデート:

私はこれまでに得た提案に従いました:

  • nocacheヘッダーを送信しています(以下を参照)
  • 次のように、タイムスタンプURLパラメーターを含め、ページが2秒後にリロードされた場合に新しいパラメーターにリダイレクトします。

    $timestamp = $_GET['timestamp'];
    if ((time()-$timestamp) > 2) {
        header('Location:/intranet/admin/manage_skus.php?timestamp='.time());
    }
    

現在、Firebugは、ヘッダーがキャッシュを指定していないことを示していますが、問題は解決していません。このページの応答ヘッダーは次のとおりです。

Date    Fri, 25 Sep 2009 20:41:43 GMT
Server  Apache/2.2.11 (Win32) DAV/2 mod_ssl/2.2.11 OpenSSL/0.9.8i mod_autoindex_color PHP/5.2.8
X-Powered-By    PHP/5.2.8
Expires Mon, 20 Dec 1998 01:00:00 GMT
Last-Modified   Fri, 25 Sep 2009 20:41:43 GMT
Cache-Control   no-cache, must-revalidate
Pragma  no-cache
Keep-Alive  timeout=5, max=100
Connection  Keep-Alive
Transfer-Encoding   chunked
Content-Type    text/html
4

6 に答える 6

9

URLのパラメータとして現在のタイムスタンプを追加します。例:

http://server.com/index.php?timestamp=125656789
于 2009-09-25T20:16:52.533 に答える
4

私はこれがあなたが望むものを教えてくれると思います:

http://www.thesitewizard.com/archive/phptutorial2.shtml

「ブラウザのキャッシュの防止」を探してください

header( "Expires: Mon, 20 Dec 1998 01:00:00 GMT" );
header( "Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT" );
header( "Cache-Control: no-cache, must-revalidate" );
header( "Pragma: no-cache" );
于 2009-09-25T20:18:52.920 に答える
3

次のヘッダーを送信する必要があります。

Cache-control: no-cache

HTTP応答で。

于 2009-09-25T20:18:14.933 に答える
1

次のヘッダーを追加できます。

Cache-Control: no-cache

および(HTTP / 1.0クライアントとの下位互換性のため)

Pragma: no-cache
于 2009-09-25T20:18:59.027 に答える
1

PHP固有ではない別の見方があります。

あなたのセクションでこれを試してください<head> </head>

<meta http-equiv="cache-control" content="no-cache, no store"/>
<meta http-equiv="Expires" Content="Mon, 25 May 2009 19:07:03 GMT">

ここで長いスレッドの終わりにそれを見つけました:

http://forums.mozillazine.org/viewtopic.php?f=25&t=673135&start=75

于 2009-09-25T21:08:52.397 に答える
0

header()関数を使用します。すべてのブラウザをカバーするためにいくつか設定する必要があります。http://www.php.net/manual/en/function.header.php#75507を参照してください

于 2009-09-25T20:22:26.080 に答える