【问题标题】:Force browser to cache PHP generated JavaScript强制浏览器缓存 PHP 生成的 JavaScript
【发布时间】:2013-06-01 15:31:57
【问题描述】:

有很多建议如何使用标头来防止浏览器缓存文件。我想做相反的事情。下面的 cache.php 文件永远不会改变。我已经使用 FF、Chrome 和 FF 对此进行了测试,每次重新加载 index.html 时,都会从服务器下载 cache.php。如何告诉浏览器缓存 JavaScript 文件“cache.php”?谢谢

index.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
        <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" /> 
        <title>Testing</title>  
        <script src="cache.php" type="text/javascript"></script> 
    </head>
    <body>
        <p>Hello!</p>
    </body> 
</html> 

缓存.php

<?php
    syslog(LOG_INFO,'cache.php'.rand());
    header( 'Content-type: text/javascript' );
    echo('alert("Hello!");');    
?> 

【问题讨论】:

  • 如果它永远不会改变,为什么不直接保存生成的文件并将其用作 js 源?这样您就不必在 php 中摆弄 http 缓存标头,而可以让 http 服务器软件为您完成这项工作。
  • @HaukeP。它是由数据库生成的一堆数据,通过从数据库中提取数据而不是创建单独的文件来维护要容易得多。我有一个类似的下载图像的应用程序。我的图像由 PHP 提供,因此我可以控制谁可以查看。我希望服务器第一次将图像发送给客户端,但客户端将缓存的图像用于以后的请求。

标签: php javascript html browser-cache


【解决方案1】:

您必须在 PHP 中实现缓存处理。详情请查看此问题及其答案:How to use HTTP cache headers with PHP

【讨论】:

  • 该帖子有多个回复。在查看$_SERVER(或apache_request_headers();)时,我没有$_SERVER['HTTP_IF_MODIFIED_SINCE']
  • (以下是简化版。)If-Modified-Since 是浏览器在其缓存中存储了请求的页面时发送的 http 标头。但是,浏览器需要知道页面的修改日期才能将其存储在缓存中。因此,您必须发送一个标题,在其中告诉浏览器必要的日期,例如像这样:header("Last-Modified: $yourdate");。一旦浏览器收到带有该标头的页面,它会将其存储在缓存中,并在下次请求时提供Is-Modified-Since 标头。你的代码必须做出相应的反应。
猜你喜欢
  • 1970-01-01
  • 2023-04-01
  • 2021-02-10
  • 2014-05-24
  • 2011-10-11
  • 2012-08-23
  • 2016-02-18
相关资源
最近更新 更多