php - 缓存 AJAX 请求

标签 php javascript jquery ajax caching

我正在向 PHP 应用程序发送 AJAX GET 请求,并希望缓存请求返回以备后用。

因为我使用的是 GET 这应该是可能的,因为不同的请求请求不同的 URL(例如 getHTML.php?page=2 和 getHTML.php?page=5)。

我需要在 PHP 应用程序中声明哪些 header 才能使客户端浏览器以正确的方式缓存请求 URL 内容?我是否需要在处理 AJAX 请求的 Javascript 中声明任何内容(我正在使用具有缓存参数的 jQuery 的 $.ajax 函数)?

我将如何处理更改内容的编辑,例如getHTML.php?page=2 以便客户端不会回退到缓存版本? 向 GET 请求添加另一个参数,例如getHTML.php?page=2&version=2 是不可能的,因为请求的 URL 的链接是自动创建的,没有任何检查(这最好是我想要的方式)。

当我尝试 AJAX 请求缓存的请求 URL 时,浏览器将如何 react ? AJAX 请求会立即返回成功吗?

谢谢

威廉

最佳答案

在服务器上添加以下 header :

    header("Cache-Control: private, max-age=$seconds");
    header("Expires: ".gmdate('r', time()+$seconds));

$seconds 的含义很明显。

我们在这里设置了一个 Expires header ,尽管如果之前设置了带有 max-age 参数的 Cache-Control header ,它应该被忽略,因为there are clients that do not follow the standard .

此外,检查您的服务器是否不发出一些其他反缓存 header ,如 Pragma。如果是这样,也添加 Pragma: cache header 。

关于php - 缓存 AJAX 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/650440/

相关文章:

javascript - jQuery,添加多个表行无法正常工作

javascript - 事后检查后保留所选值

php - 使用 Jquery 和 PHP 的 AJAX 复选框

javascript - 通过 AJAX 调用在 div 中显示 JS 数组

用于验证 URL 的 javascript jquery 正则表达式

jquery - 我将如何扩展此输入验证?

javascript - 在 MVC Web 应用程序中包含 Jquery 时间选择器的步骤

php - 如何给表 tr 上色?

javascript - 设置 javascript 变量的 symfony 方法是什么?

Javascript - for 循环中的 sleep()