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");
?>

问题:您将如何测试它,以确保它确实有效?

补充,注释:我需要一个愚蠢的简单测试;我的技能水平很低。我无法进行缓存清除(网址更改),因为它是一个单页网站。

4

3 回答 3

3

获取当前时间()并将其存储在 PHP 会话中。使用 var_dump() 打印出 $_SESSION 数组,并打印当前时间()。点击“刷新”几次。期望会话数组保持稳定并且当前时间发生变化。如果两者都保持稳定,则脚本输出将被缓存。

此处示例: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 的开发者工具或 Firefox 的 Firebug,都允许您检查包含缓存所需的所有信息的请求和响应标头。

此外,如果您在 Windows 上进行开发,我可以推荐使用Fiddler,这是一个出色的调试代理,除了提供应用程序的深度流量分析之外,还可以用简单的英语向您解释缓存的情况。

于 2012-12-17T23:00:45.613 回答
0

您应该在 Web 服务器日志中看到页面访问。比较访问模式,当页面被重新请求时,有和没有额外的标题。

于 2012-12-17T23:01:26.567 回答