1

私のサイトには、特定のブラウザー (特に Opera と gecko) が「オーバー キャッシング」 (私の好みではキャッシングが多すぎる) という問題がありました。

次の PHP スニペットを追加して、うまくいけばすべてのブラウザーでキャッシュを無効にしました。

<?php 
header("Expires: Tue, 01 Jan 2000 00:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
?>

質問: 実際に機能することを確認するために、これをどのようにテストしますか?

追加、メモ: ばかばかしいほど簡単なテストが必要です。私のスキルレベルはかなり低いです。ワンページサイトのため、キャッシュバスティング(URL変更)ができません。

4

3 に答える 3

3

現在の time() を取得し、PHP セッションに保存します。var_dump() を使用して $_SESSION 配列を出力し、現在の time() も出力します。「更新」を数回クリックします。セッション配列が安定したままであり、現在の時刻が変化することを期待してください。両方とも安定している場合、スクリプト出力はキャッシュされています。

例: http://www.laprbass.com/RAY_cache_test.php

<?php // RAY_cache_test.php
error_reporting(E_ALL);
date_default_timezone_set('America/Chicago');

// SEND HEADERS
header("Expires: Tue, 01 Jan 2000 00:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

// START SESSION
session_start();

// GET CURRENT TIME
$now = date('c');

// IF NO TIME IN SESSION YET, STORE ONE
if (!isset($_SESSION['myTest'])) $_SESSION['myTest'] = $now;

// SHOW THE SESSION AND THE CURRENT TIME
echo 'SESSION TIME: ' . $_SESSION['myTest'];
echo '<br/>';
echo 'CURRENT TIME: ' . $now;
于 2012-12-17T23:00:34.053 に答える
0

Chrome の Developer Tools や Firefox の Firebug などのブラウザー拡張機能のほとんどを使用すると、キャッシュに関して必要なすべての情報を含む要求ヘッダーと応答ヘッダーを調べることができます。

さらに、Windows で開発している場合は、Fiddlerを使用することをお勧めします。これは、アプリケーションの詳細なトラフィック分析を提供するだけでなく、キャッシングで何が起こっているかを平易な英語で説明できる優れたデバッグ プロキシです。

于 2012-12-17T23:00:45.613 に答える
0

Web サーバー ログにページ アクセスが表示されるはずです。追加のヘッダーがある場合とない場合で、ページが再リクエストされたときのアクセス パターンを比較します。

于 2012-12-17T23:01:26.567 に答える