强制Ajax内容的页面缓存

时间:2010-06-01 16:38:07

标签: php caching

我有一个搜索页面,其结果是通过ajax加载的。然后,它会在页面上列出产品,您可以单击以查看每个产品。我想更改此页面,在您查看产品后,如果您在浏览器上单击“返回”,它将加载缓存而不是强制用户再次搜索。

注意:我不是在寻找一个ajax缓存,而是一个简单的浏览器缓存标题

我怎样才能做到这一点?

我目前有......

header('Cache-Control: private, max-age:3600');
header('Expires: '.gmdate('D, d M Y H:i:s \G\M\T', time() + 3600));

并且它不加载缓存

3 个答案:

答案 0 :(得分:1)

我建议使用你的会话保存结果,而不是在浏览器上捕获“后退”按钮或依赖Javascript(从来不是一个好主意)。我通常对搜索结果执行的操作是将格式化结果保存到会话中以便快速重新加载(对于您所描述的情况,在查看详细信息页面后返回)并在他们进行新搜索时替换它以便您没有大量的会话数据堆积起来。

当您加载页面时,检查是否有任何POST数据(或GET,但是您正在执行此操作),然后检查会话以查看是否使用该数据进行了最近的搜索。这样可以加快速度并从数据库中消除一些流量。

答案 1 :(得分:1)

关于这个问题的好文章及其解决方案: http://asciicasts.com/episodes/175-ajax-history-and-bookmarks

答案 2 :(得分:0)

您可能想要使用jQuery历史插件。 请参阅demo