【问题标题】:Clearing cache after development for visitor访问者开发后清除缓存
【发布时间】:2012-10-12 08:35:58
【问题描述】:

我正在开发网站,一些访问者的浏览器出现旧缓存。

有没有办法我们可以使用服务器端的代码甚至 javascript 来清除访问者的浏览器缓存,这样他们就不必清除自己?

我找不到直接的答案。

大公司一定有办法像 Facebook、Ebay 等

【问题讨论】:

标签: php javascript caching


【解决方案1】:

我们一直在使用 htaccess 来确定客户端的缓存规则。我们明确地赋予缓存 24 小时的生命周期,并在更新前一天设置无缓存规则。它有所帮助,但它很乏味且不那么可靠。

如果没有人回答,只是为了给你一些想法,但我也很想得到答案。 :)

【讨论】:

    【解决方案2】:

    第一种方法:

    您实际上可以在结束脚本之前保存页面的输出,然后在脚本开始时加载缓存。

    示例代码:

    <?php
    
    $cachefile = 'cache/'.basename($_SERVER['PHP_SELF']).'.cache'; // e.g. cache/index.php.cache
    $cachetime = 3600; // time to cache in seconds
    
    if(file_exists($cachefile) && time()-$cachetime <= filemtime($cachefile)){
      $c = @file_get_contents($cf);
      echo $c;
      exit;
    }else{
      unlink($cachefile);
    }
    
    ob_start();
    
    // all the coding goes here
    
    $c = ob_get_contents();
    file_put_contents($cachefile);
    
    ?>
    

    您实际上可以在结束脚本之前保存页面的输出,然后在脚本开始时加载缓存。

    示例代码:

    如果您有很多页面需要这种缓存,您可以这样做:

    在cachestart.php中:

    在cacheend.php中:

    <?php
    
    $c = ob_get_contents();
    file_put_contents($cachefile);
    
    ?>
    

    然后只需简单地添加

    include('cachestart.php'); 在脚本的开头。并添加

    include('cacheend.php'); 在脚本的末尾。请记住有一个名为 cache 的文件夹并允许 PHP 访问它。

    还请记住,如果您正在执行整页缓存,则您的页面不应有特定于 SESSION 的显示(例如显示成员的栏或其他内容),因为它们也会被缓存。查看特定缓存(变量或页面的一部分)的框架。

    第二种方法:

    使用 Squid 或正确更新 HTTP 标头来进行浏览器缓存。

    PEAR 有一个缓存包(其实是两个):

    http://pear.php.net/package/Cache

    第四法:

    使用http://memcached.org/。该网站上有关于如何操作的说明。

    【讨论】:

      【解决方案3】:

      我通常使用多种技术组合:

      • 使用标准配置不会缓存由 PHP 代码生成的 HTML,因为它会自动发送适当的标头。
      • 如果图像和其他二进制资产发生更改,它们会被重命名。
      • 对于 JavaScript 和 CSS,我将自动创建的唯一代码(例如内容或文件大小的 MD5 哈希)添加到文件名(例如 /public/styles.f782bed8.css)并使用 mod_rewrite 再次删除它。这样,文件中的每次更改都会产生一个新的文件名。这可以在 PHP 运行时在输出 HTML 标头时完成,以使其完全自动化。但是,在这种情况下,MD5 可能会对性能产生影响。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-01-01
        • 2012-10-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多