Loading...

换个思维解决问题

2007-09-22 20:51:51 发表于生活工作 本文链接: 换个思维解决问题

本次对cos-html-cache的缓存机制又进行了一次历史性的改进,2.3之前的版本获取缓存是通过php程序模拟客户端去获取对应页面的html内容,然后将内容进行缓存。而这次的2.3的版本则是直接在php中获取输出区缓冲的内容。以前的方式最大的瓶颈在于建立socks连接需要很长的时间,而且也比较消耗资源,所以cos-html-cache2.3和以前的相比写缓存的速度已经提升了一个数量级,丝毫没有夸张。其实早就打算将这个插件升级成2.3的模式了,但是当时一个问题一直困扰着我,所以迟迟未做改变,前天突然想到用另外一个方式解决了这个问题,所以换一个思维方式就海阔天空了。

问题是这样的:大家都知道,正常的没有缓存的wordpress,评论的地方将会根据用户的登录状态而显示不同的样式,如果当前有admin登录,则评论框将自动显示成登录状态,填写评论者名字、评论者email和评论者主页的文本框将不会出现。正是由于这样的原因,在2.3的机制下 ,如果第一次访问post页面是admin本人,则生成的缓存文件在评论的地方就是登录的状态,所以,其他人访问这个已经生成了的静态页面的时候看的效果也将是登录状态的效果,此时如果访客想要评论则永远不会成功,因为事实上该访客没有登录,也没有输入姓名、email(因为没有地方输入)。当初为了解决这个问题,首先想到的办法就是让admin访问未缓存的页面的时候直接将admin的登录状态给注销,这样一旦admin访问自己的页面是非静态的时候将直接被注销登录,可想而知这是多么的不友好的。一直没有想到可行的好办法,所以2.x的版本还是沿用了1.x版本的获取缓存的方式,改变的仅仅是缓存的生成触发机制。

前段时间,听说wordpress要发布2.3版本了,而且有朋友在gtalk中问质疑cos-html-cache是否可以应用于2.3版本,因为wp2.3的数据库结构发生了很大的变化,由于cos-html-cache插件的特殊原理,于数据库的结构几乎没有关系,所以我想都没有想就回答说应该没有问题,但是当这位朋友再提及wordpress2.3版本的对链接做了一致性的处理的时候,我就想糟糕,或许cos-html-cache会面临兼容性的问题,不止这个插件,凡是本站的ajax效果和那些和ajax相关的插件可能都会面临不兼容的问题,后来测试的结果就如预料的那样,2.01的cos-html-cache无法兼容wp2.3,原因就在于链接的唯一性,所以cos-html-cache的升级是必须的了。

wordpress2.3其实还有更狠的改变,可能有些朋友没有注意到,这个改变将会让那些做自动采集的人要郁闷一阵子了,因为如果http请求不是主流的浏览器的话,wp将不做任何反应,至少我用php的socksopen测试是如此,也有可能是程序发送http请求的时候的时候给的header信息不够,譬如没有给出浏览器类型,浏览器版本,cookie状态等等,但同样的方式在2.3之前的版本是可以成功的。再加上链接的唯一性,这个两个原因使得cos-html-cache非得改版,而且缓存生成的机制也得改变。

这样有回到原来面临的那个评论显示的问题了,不过不知道什么原因,这次突然灵光一闪,就解决了这个问题,虽然后来想来这样的解决方式很简单也很容易想到,但是人一旦思想进入了死胡同,就很难出来了,在以前我一直思考的是如果在生成缓存的时候临时将admin注销,等待缓存创建结束后再次恢复admin的登录状态。现在的解决方式很简单了,那就是如果第一次访问post页面的用户是admin本人,则不产生html静态文件,就这样简单,这个问题就解决了。而且这样还有一个好处是admin编辑文章之后的预览效果和没有缓存是一模一样的。有些问题,从另外一个方向去想,就能很快很容易的解决了。

同样,那些认为将wordpress静态化很BT的朋友,你也可以这样想,如果一个人写blog仅仅就是在网络上发表展示而已,不需要及时更新其他信息,也不需要很多的互动,仅仅是当有评论或者有新文章的时候需要变化,静态化之后能满足自己的需求,有能提高访问的访问速度,有何不可呢,即使只有一个人浏览,也可以静态化啊,因为静态化没有带来不便,至少对于我是这样,当然还是要选择合适自己的东西。

正所谓,退一步海阔天空,思维亦是如此!

标签:,
发表于 2007-09-22 20:51:51 目录:生活工作 [RSS 2.0] 你可以发表评论, 或者从您的网站 trackback
  • 相关阅读
  • homezz 美国专业主机商
    已经有2位大师动手指导 拒绝低俗
    • 1楼 hhalloyy 在2007.09.22 20:58发表评论如下: 回复

      挺变态的简单方法。
      我还一直没升级呢。
      [r]这就是所谓的峰回路转啊,建议升级吧,这个版本的效率应该是数量级的上升了,虽然平均分下去不明显,但是至少在生成缓存的瞬间的效率是很明显的哦[/r]

      • 2楼 李博 在2007.09.22 21:42发表评论如下: 回复

        支持一下

        评论分页: 1
        (Required)
        (Required, not published)
        如果留言未显示无需重复留言,我将为你恢复!