如何设置http头缓存?

时间:2012-10-08 10:50:23

标签: php

我需要使用http标头将javascript和页面详细信息存储到浏览器缓存中。

任何人都可以帮我解决这个问题吗?

非常感谢

3 个答案:

答案 0 :(得分:2)

您可以使用HTML meta:

<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 :(得分:0)

如何简单地在标题中设置过期日期 -

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

应该注意的是,现代浏览器可以很好地缓存资源。通常这些方法用于强制重新加载资源;防止浏览器缓存。

答案 2 :(得分:0)

我认为对于您想要缓存的内容存在一些疑惑。这里引用了两个项目 -

  1. 页面本身包含所有HTML元素和对外部文件的引用。
  2. HTML文档引用的JavaScript文件。
  3. 要缓存第一个项目(页面),使用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();
    }