很抱歉这个问题很长。我已经对此进行了一段时间的故障排除,并认为我会分享所有内容。
我正在运行 vBulletin 5.1.5(不要为此为难),我正在尝试找出问题是 vBulletin 软件还是 Apache 问题。
系统:vBulletin 5.1.5、Apache 2.4.7、mod_expires、memcached
无论本地浏览器如何(Chrome 和 Firefox 都这样做),都会出现此问题。
我刚刚从 vBulletin 5.1.4 升级到 5.1.5,之后立即开始出现此问题。vBulletin 说这是一个 Apache 服务器问题,他们只会将内容/标题设置为无缓存,或者不理会它。
如果有人对某个主题发表了回复,然后返回到主论坛页面,则新回复不会显示为最新回复(主题仍显示 0 条回复)。如果他们随后返回线程,则在他们刷新页面之前不会显示回复。
我们已经清除了 vBulletin 系统缓存,删除了该域的所有 cookie 并清除了本地缓存。
通过 Chrome 开发人员工具(网络选项卡),我看到以下内容:
页面更新后,vBulletin 不应该重置 HTTP 标头中的 Date: 吗?
我在世界标准时间 15:12:05 发布原始帖子。我在世界标准时间 15:12:10 后立即回复。页面 HTTP 标头仍将 Date: 显示为 15:12:05 UTC。我离开页面并转到主论坛页面,然后返回帖子。它仍然显示 HTTP Header Date: 为 15:12:05 UTC,直到我刷新它。所以..客户没有被告知页面有更新。这是由 vBulletin 设置的,不是吗?由于页面是动态创建的?
我在配置文件中打开了调试并查看了时间戳((在每个渲染页面的底部由 vbulletin 生成):
初始帖子 - 当前时间:星期三,2015 年 2 月 4 日 11:31:39 -0500 评论后 - 当前时间:星期三,2015 年 2 月 4 日 11:31:39 -0500 点击论坛链接 - 当前时间:星期三,2015 年 2 月 4 日 11 :31:03 -0500 点击刷新 - 当前时间:星期三,2015 年 2 月 4 日 11:33:12 -0500 再次点击主题 - 当前时间:星期三,2015 年 2 月 4 日 11:31:39 -0500 点击刷新 - 当前时间: 2015 年 2 月 4 日,星期三 11:35:15 -0500
请注意,当我点击论坛链接时,我会回到过去(即使我已经发了一个新帖子)。我刷新,我们回到当前时间。
然后,当我再次单击该主题时,时间戳与最初的发布时间相匹配——而不是我发表评论后的时间。再一次,我刷新,我们回到当前时间,回复显示。
查看日志:
- 我点击新线程 GET /forums/new-content/44 HTTP/1.1
- 我发帖 POST /forums/create-content/text/ HTTP/1.1
- 页面刷新 GET /forums/forum/general/test-forum/28305-this-is-another-new-topic
- 我添加回复 POST /forums/create-content/text/ HTTP/1.1
- 回复显示 POST /forums/create-content/loadnode HTTP/1.1
- 我去帖子的父论坛 GET /forums/forum/general/test-forum HTTP/1.1
- 我点击帖子,页面显示和一个 POST /forums/ajax/api/node/incrementNodeview HTTP/1.1 然后 GET /forums/foru...-another-testt HTTP/1.1
一切都有一个状态码 200。第 6 项和第 7 项有一个 Cache-Control: max-age=3600 和原始帖子的日期和时间。
也许我不确定服务器和客户端之间的到期如何工作?从客户端到服务器的过程不应该是......拉下原始页面并在本地缓存它。稍后请求同一页面,向服务器发送请求以获取标头以查看页面是否有新时间,如果匹配则拉取本地副本,如果不匹配则发送新副本。Apache 不知道页面是否已更新 - 这是由 vBulletin 生成的,对吗?
有什么想法吗?