【问题标题】:PHP check if url exists in browser cachePHP检查浏览器缓存中是否存在url
【发布时间】:2014-08-07 03:50:36
【问题描述】:

我的 Web 项目基于 XSLT 创建的 XHTML 页面,这需要一些时间来创建。另一方面,原始 XML 很少更改。因此,我在 PHP 中设置了一个带有 HTTP 标头的浏览器缓存:

header("Cache-Control: public, max-age=3600"); 

现在在浏览器中“后退”和“前进”非常流畅。

但还有另一种情况: 通过单击某些链接,用户可能会再次获得相同的页面。 URL 也完全相同。但在这种情况下,页面不是从浏览器缓存中加载的,而是重新创建的。我在 http://www.webgeekly.com/tutorials/php/learn-how-to-cache-content-with-php-in-under-5-minutes/ 上找到了一个非常好的服务器缓存解决方案。但是从浏览器缓存中检索文件会更快。

那么,PHP 中有没有办法做到这一点:

  • 检查某个 URL 部分(如“output.php?id_of_search=123454&action=select”)是否在浏览器缓存中
  • 如果是:从浏览器缓存加载具有该 URL 的页面。

提前致谢!

【问题讨论】:

    标签: php caching browser-cache


    【解决方案1】:

    如果你的 php 脚本被执行,浏览器已经决定不使用它的缓存。否则它根本不会请求您的页面,而只是从缓存中为用户提供服务。含义:当时没有办法从php触发缓存。

    之所以不使用缓存,是因为浏览器认为结果会是另一个页面。因此,如果您确保同一页面始终具有相同的 URL 链接,则缓存将正常工作。

    这里的一个陷阱可能是

    http://example.com/somepage.php
    http://example.com/somepage.php?someparam=1
    http://example.com/somepage.php?someparam=2
    

    这些 URL 都生成相同的响应,但浏览器认为它们不同。

    【讨论】:

    • 谢谢!我不得不在 apache 的 httpconfig 文件中更改 HTTP 标头中的常规缓存控件。它现在按预期工作!
    猜你喜欢
    • 2012-03-01
    • 2011-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    • 2013-09-29
    相关资源
    最近更新 更多