1

很抱歉这个问题很长。我已经对此进行了一段时间的故障排除,并认为我会分享所有内容。

我正在运行 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

请注意,当我点击论坛链接时,我会回到过去(即使我已经发了一个新帖子)。我刷新,我们回到当前时间。

然后,当我再次单击该主题时,时间戳与最初的发布时间相匹配——而不是我发表评论后的时间。再一次,我刷新,我们回到当前时间,回复显示。

查看日志:

  1. 我点击新线程 GET /forums/new-content/44 HTTP/1.1
  2. 我发帖 POST /forums/create-content/text/ HTTP/1.1
  3. 页面刷新 GET /forums/forum/general/test-forum/28305-this-is-another-new-topic
  4. 我添加回复 POST /forums/create-content/text/ HTTP/1.1
  5. 回复显示 POST /forums/create-content/loadnode HTTP/1.1
  6. 我去帖子的父论坛 GET /forums/forum/general/test-forum HTTP/1.1
  7. 我点击帖子,页面显示和一个 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 生成的,对吗?

有什么想法吗?

4

1 回答 1

0

原来这是 /forums 目录(在 web 根目录下)从父目录 (/) 继承 .htaccess 指令的问题。那里有许多 expires 指令正在被监听。现在..弄清楚如何忽略父目录中的 .htaccess 文件...

于 2015-02-04T22:31:38.157 回答