2012-10-08 98 views

回答

0

如何简单地设置到期日在包头 -

header("Cache-Control: public"); 
header("Expires: Tue, 08 Oct 2013 00:00:00 GMT"); // Date in the future 

应当指出的是,现代的浏览器做好缓存资源。通常这些方法用于强制重新加载资源;防止浏览器缓存。

+0

我已经使用了您在此发布的相同代码,但是我得到的结果低于其结果并且它不工作,[HTTP_PRAGMA] => no-cache [HTTP_CACHE_CONTROL] => no-cache –

+0

您如何引用JavaScript文件? – Lix

+0

对不起,我不明白你的意思到底在这里....我通过脚本标记引用JavaScript文件... –

2

你可以使用HTML元:

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

PHP头:

header("Cache-Control: public"); // HTTP/1.1 
header("Expires: Tue, 08 Oct 2013 00:00:00 GMT"); // Date in the future 

来源:[PHP Manual]

+1

在过去设置过期日期会强制浏览器重新加载资源 - 完全相反的缓存.. – Lix

+0

看看'Cache-Control'头部以及... – Lix

+1

对不起。阅读手册的错误部分,不太熟悉标题。 –

0

我认为你确实想要缓存什么有些混淆。这里提到两个项目 -

  1. 页面本身包含所有HTML元素和对外部文件的引用。
  2. HTML文档引用的JavaScript文件。

要缓存第一个项目(页面),使用PHP设置标题应缓存页面的HTML内容。

header("Cache-Control: public"); 
header("Expires: Tue, 08 Oct 2013 00:00:00 GMT"); // Date in the future 

这将缓存页面的内容,但不一定是它引用的文件。例如,如果你在你的HTML文件中有这样的代码 -

<script src="http://domain/some/js/file.js" type="javascript" ></script> 

然后就是文本将缓存而不是file.js。要手动设置这些外部文件的缓存,您需要使用PHP提供服务并手动设置标题。 你会想要做类似的事情这 -

<script src="another_file.php" type="javascript" ></script> 
another_file.php

现在你会想加载JavaScript文件和“回声”它与适当的标题 -

$file = '/absolute/path/to/your_script.js'; 
if (file_exists($file)) { 
    header('Content-Type: text/javascript'); 
    header('Content-Length: ' . filesize($file)); 
    ob_clean(); 
    flush(); 
    readfile($file); 
    exit(); 
}