对不起,这个问题很长。我已经排除了一段时间的故障,我想我应该分享一切。
我正在运行vBulletin 5.1.5(不要为难我),我想弄清楚是vBulletin软件的问题还是Apache的问题。
系统:vBulletin 5.1.5, Apache 2.4.7, mod_expires, memcached。
无论本地浏览器如何,这个问题都会发生(Chrome和Firefox都会发生)。
I 只是 vBulletin说这是Apache服务器的问题,他们只会把contentheaders设置为no-cache,或者不管它。
如果有人发布了一个回复到一个主题,然后回到论坛主页面,新的回复不会显示为最新的(主题仍然显示0个回复)。如果他们再回到主题中,回复不会显示,直到他们刷新页面。
我们已经清除了vBulletin系统缓存,删除了该域的所有cookies,并清除了本地缓存。
通过Chrome开发者工具(网络选项卡),我看到了以下内容。
当一个页面被更新后,vBulletin不应该重置HTTP头中的Date:吗?
我在15:12:05UTC发了原始帖子。我在15:12:10UTC立即做出回复。页面的HTTP头仍然显示日期:为15:12:05 UTC。我离开页面,进入论坛主页面,然后返回帖子。它仍然显示HTTP头日期:为15:12:05 UTC,直到我刷新它。所以......客户端并没有被告知页面有更新。这是由vBulletin设置的,不是吗?因为页面是动态创建的?
我在配置文件中开启了调试功能,并查看了时间戳((在每个渲染页面的底部由vbulletin生成)。
Initial Post - Current Time: Wed, 04 Feb 2015 11:31:39 -0500After Comment - Current Time: Wed, 04 Feb 2015 11:31:39 -0500Click on forum link - Current Time: Wed, 04 Feb 2015 11:31: 03 -0500点击刷新 -当前时间:Wed, 04 Feb 2015 11:33:12 -0500再次点击主题 -当前时间:Wed, 04 Feb 2015 11:31:39 -0500点击刷新 -当前时间:Wed, 04 Feb 2015 11:35:15 -0500。
请注意,当我点击论坛链接时,我回到了过去(即使我已经发了一个新帖子)。我刷新,我们回到当前时间。
然后,当我再次点击主题时,时间戳符合最初的帖子时间--而不是我发表评论后的时间。再一次,我刷新,我们回到了当前时间,回复也显示出来了。
看着日志。
一切状态码为200。第6项和第7项有一个Cache-Control:max-age=3600和原帖的日期和时间。
可能我不清楚服务器和客户端之间的过期是如何工作的?从客户端到服务器的过程是不是应该是这样的......把原来的页面拉下来,缓存在本地。之后再请求同样的页面,向服务器发送一个请求头,看页面是否有新的时间,如果符合则拉下本地副本,如果不符合则发送新副本。Apache不知道页面是否已经更新--这是由vBulletin生成的,对吗?
有什么想法吗?
原来是论坛目录(web根目录下)继承父目录()的.htaccess指令的问题。那里有很多过期的指令被监听了。现在....要想办法忽略父目录的.htaccess文件....