php - 使缓存内容无效,If-Modified header ?

标签 php jquery ajax caching header

我遇到了一个特殊的问题:

PHP SCRIPT:

// checks If-Modified-Since header (if nothing has changed)
// Sends HTTP/1.0 304 Not Modified
// Sends Cache-control: public, must-revalidate
// exits

// if NO If-Modified-Since or something has changed
// builds content
// Sends Last-Modified: [DATE TIME]
// Sends Cache-control: public, must-revalidate
// exits

我正在使用 jQuery AJAX 尝试按需刷新内容,我尝试通过使用“beforeSend”参数更改 If-Modified-Since header 以及过去的日期时间来实现此目的。

目前发生的情况是:

  1. 已发出请求,200 OK 响应,内容新鲜
  2. 后续请求会收到 304 响应,浏览器会从缓存中提取
  3. 服务器上的内容已更改
  4. 使用修改后的 If-Modified-Since header 发出请求(不更改 URL 字符串),200 OK 响应包含新内容
  5. 后续请求(不更改 If-Modified-Since header )似乎会检索第 1 步中的旧内容

我想我的印象是,在第 4 步,浏览器内容应该已刷新,我错过了什么?

我设置了一个小测试,以便您可以尝试看看我的意思:http://tweetplenty.com/test/test2.php ...如果可以的话,请使用 FF 和 firebug,就像我使用 console.log() ...这是操作顺序:

  1. “正常”链接将向 http://tweetplenty.com/test/test.php 发出请求。不修改 if-modified-since ...使用“正常”链接的后续请求应返回 304(每 60 秒应返回 200 OK)

  2. “if-modified-since”链接将向 http://tweetplenty.com/test/test.php 发出请求。使用修改后的 if-modified-since header ,浏览器将返回新内容。

  3. 此时再次点击“正常”会返回之前缓存的数据,我认为点击“if-modified-since”链接后应该会刷新数据。

如果您想查看测试脚本本身,请访问:http://tweetplenty.com/test/test.zip

最佳答案

我认为您想要修改所有传入请求的 header 。查看 this page 上的示例 #2 .

关于php - 使缓存内容无效,If-Modified header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1295397/

相关文章:

javascript - 使用 One Drive API 的错误 JSON 请求

asp.net - Ajax 自动完成扩展程序并获取所选项目的 ID?

php - 如何获取 PHP 中的 mime 类型

php - 如何访问自身内部的 laravel .env 变量

javascript - (Summernote) - jQuery 和 Prototype 框架兼容性

javascript - Wordpress JS CSS 组合不起作用,我不知道为什么

php - Laravel CSRF保护下的JQuery AJAX跨站请求

javascript - Android - Java 中的 AJAX

php - 通过帖子名称而不是 id 获取帖子

php - 使用 TIMESTAMPDIFF PHP MYSQL 同时更新结束时间和持续时间