缓存插件作者江东:站点设计要考虑缓存机制

2009-08-22 15:37:43 来源: 网易科技报道 举报
0
分享到:
T + -
著名WP缓存插件cos-html-cache作者江东

网易科技讯 8月22日消息,WordCamp 2009今日在北京清华科技园阳光厅举行。Automattic公司多国语言化专家Nikolay Bachiyski、国内互联网资深用户詹膑等互联网资深人士、Opera浏览器公司中国区市场部经理王立浩、 “可能吧” 创始人、主要撰稿人伍嘉贤等作为嘉宾参加演讲。

本次活动由网易科技和LampDrive联合主办,网易科技全程视频报道本次会议。


著名WP缓存插件cos-html-cache作者江东在演讲中表示,站点设计之初要考虑缓存机制。

尽量减少从数据库中获取已知参数,包括我们的标题,包括子目录,以及我们的一些目录的变量,并减少不必要的数据库查询,而使用文件缓存。

他表示,对中小站点的缓存方式考虑,第一个,在设计之初考虑缓存机制;第二,根据不同的内容设定不同的缓存时间;第三,配合Javascript使缓存更加高效;第四,采用ajax专门优化无法缓存的内容。

以下为演讲实录:

主持人:非常感谢王立浩给我们带来的演讲。今天所有演讲嘉宾的PPT都可以去他们自己的个人博客上下载到。下一位演讲嘉宾是江东,他是非常著名的插件,他的演讲题目是《WordPress的缓存和中小型PHP网站缓存思路交流》,大家欢迎!

江东:大家下午好!非常高兴有机会和大家对WordPress的一些思路做一些交流。这次主要还是以交流为主,所以在我后面介绍的过程当中,大家有问题可以随时提出来我们一起探讨。

首先我做个自我介绍,我的网名是cosbeta,这是上大一的时候起的,下面是我自己的相关网站,大家看这个照片是几年前的我。今天我介绍是分三个部分,第一个是我们为什么需要缓存,第二个问题是怎么为WordPress做缓存,第三个是大型的网站都有自己独特的处理方式,我们来研究一下。

第一,你的网站访问量越来越多,访问者越来越多,还有一个就是在座各位独立门户的,用的应该都是CPU3,那么你再不解决问题,我们就会把你的站给停掉了。那么还有一个是用户的网站速度越来越慢,跟蜗牛一样,我们就想让速度变得快一些。还有就是一种快速的感觉。为什么有这种需求呢?有用户问我说可不可以用插件,假设可以,他说话的速度很快,经常刷新的很快,页面就死掉了,所以也不行。

有人说WordPress怎么设计的那么差?其实不是那回事,WordPress的安装很简单,只要按照123,完全不用特别的知识。设计又简单,但是对数据的要求和操作比较高。第二个是插件恢复,WordPress提供了很多功能,他的操作也很简单。

还有一个就是随心所欲,是因为他避免不了他的数据库设置的有一些不太合理的地方,但是因为要用户处理,所以他变得比较复杂了。

那么我们看一下服务器负载的原因何在,其实根据我以前的经验和CPH遇到的一些问题,我们当时是不是只考虑了这一点,大家可以从这张图片上看到,我们是在一个查询的时候,如果查询的时间过长他会有一个记录,一分钟之内有一个查询会消失掉,如果有一个用户反复的很厉害的话,那他就把这个占用起来,CPU肯定一下子就很高。

所以我们今天讲的优化,第一,尽量减少从数据库中获取已知参数,包括我们的标题,包括子目录,以及我们的一些目录的变量,都是数据库里面的,所以有一些东西我们可以从数据库里面提出来。大家可以看到这个网上的一些解决方法,我们看Press里面有很多方法,我们把他直接写到模板里面也可以,这个是在网上流传了很久的方法。

第二个就是减少不必要的数据库查询,主要是两个,第一个服务器到用户端的传输过程中,大家可能看到的就是压缩,还有就是把那个图片给减了,或者是合并,这都是一个传输的因素,那么我们今天这里关注的是解决服务器端的,所以这种查询要尽量的减少。比如这样的站点,下载一个图片就需要很长时间,这里边我们就把传输的问题解决了,然后我们再解决服务器上的解决思路。

那么我们看第三个,使用文件缓存。因为我们都知道,一个动态的网站,网页上一个日志,用户访问的浏览器的参数,去获取数据库里面的内容。那么如果我们,比如这个用户的内容基本上没有什么变化,那么我们可以把他取出来,这样的话,再打开就可以直接的访问了。

我们看一下一个理想的文件缓存系统的特点,那就是一个关键词语,就是说我访问了,用户看到了,用户不知道你给的是什么。缓存随动态更新,我有了改变,这个更新了,那么你看我们在几年前,我是在刚开始的时候,我们看到有一些网民到一些网站去缓存,那么他是直接的更新。那么我们看对WordPress他出现哪些情况需要跟其他的一起,第一个是日志,用户一看更新出现了,上面没有新的知识了,他就不用了。还有日志被修改,日志的改变等等这些。这些方面他都有一个很好的支持,这里刚才我们已经讲到了。

我们看就是一旦你要写一个插件支持缓存,你把相关的缓存删掉,他就生成了。基本上把插件删掉就可以改变了,我们知道他为什么可以改变。

那么现在我们看,我写过一个缓存,写过一个日志,写过一个页面,这个时候手机的页面直接到我的网络页面上去了,这是一个主动的。那么我们看还有一个方面是被动的缓存,内容改变了,那么把他删掉。这种方式非常的灵活,如果你缓存对一个用户的访问,跟你产生的是一样的效应,只不过大家都做一样的事情,而你保存到一个文件里面。

那我们看一下现在缓存的方式,刚才我说了在几年前一个站点,他会有一些提示,明确的提示本站的插件,本站的缓存多少之后会马上显示,那么还有一个就是咱们显示的插件,只要发生了改变,我检测到了你的改变,就给你修改。那么第一个要求,因为我们可以重新判断,只要超过这个缓存的生存期,不在这个页面,就可以设计了。还有一个是你跟这个相关的,比如你这个日志更新了,放到首页里,那么我的首页必然就变了,下面有上一面,下一面,所以这个考虑是非常复杂的。用户体验我们可以看一下做的非常好,也是缓存的方式越来越好。

那么我现在还在想,其实我现在只是缓存一个单边的,那么其他的有没有缓存,我们最关注的产品里面,他页面的访问量是很高的,而且他的日志链接,看起来就像是一个链接,所以我给这个链接就写了一个文件,其他的东西我都没有计划的,如果是你的博客朋友访问量特别高,那么这个也可以用缓存,我们可以采用即时更新的方式。打个比方,我们没有太多的时间,设置一个小时,其实对任何一个人来说,基本上很少有一天发布24个博客的,或者如果你说我一天发布24个,那我可以把那个缓存的时间期设置一下。所以下一步扩充先把分类,把标签的一些页面都用一种辨识类型的缓存方式。

那么对中小站点的缓存方式考虑,第一个,在设计之初考虑缓存机制。第二,根据不同的内容设定不同的缓存时间,使缓存变得高效,那时间变动了怎么办?我们就设置一个缓存的时间。第三,配合Javascript使缓存更加高效,第四,采用ajax专门优化无法缓存的内容。

第一个缓存机制,我们设计之初应该考虑缓存机制,大家考虑这个因素,就是分析,比如数据库里面检察一个内容,其实是做了两件事,第一个内容是文件缓存,第二个是数据库缓存。你所有的缓存都到一个目录下面,而这个目录你存了六、七个文件,也是可以的。页面多了,怎么办?是不是分目录,然后再子目录。

还有一个就是我们可以把他放多数据库里面,就是说缓存不一定说只要进数据库才能缓存,比如我的名字跟我的职业相关,那么通过我的ID找到我的职业,假如我的职业不同面,也可以做这样的缓存。

第二个根本不同的内容设定不同的缓存时间,我们看对不同的内容设置不同的缓存时间,比如这个页面是一个海淀区的等等一个介绍,像这种东西,我们设定的缓存时间,你可以一直缓下去。1992年建立了海淀区,这个没关系,一下子写错了,比如说1991年,1993年,看的不担心这个。比如你这个网站选择什么时候建网,这个价格必须要实施,但是如果你说你能够准确的判断,当我给你一个很高的价钱的时候,你能够做到百分之百也可以。

那么还有一个是使缓存更加高效,大家可以看到,我刚才说的是缓存,当一个用户加入Blog之后,他创建了之后,除非这个用户改变了,比如把他把移到深圳,这是服务器端的事。比如这个时候博客的一个信息,这个时候要找的话,就在这个基础上,把这个数据存下来,当你再次点击的时候,这个数据直接就出来了。就是说你尽量的选择存着,尽量的少去查询服务器,设定缓存很容易你考虑不到的,所以这其实还是一个不同的逻辑思维要考虑到的。

那么最后我就做一个效率的计算,比如一个页面一天有一万的访问量,那么该页面产三万次,如果这样的一个缓存,假设我是说缓存效率最低的就是10分钟,那么我们可以看到,一天24小时,这个就是144,原来的30万次到现在的300次,当然这个效率是很低的,所以使用缓存的效率是比以前好了。我的演讲到这里了,谢谢。

提问:您刚才讲了很多缓存的具体实现技术细节方面的东西,但是对于普通的用户来讲可能不是实用啊,能否讲一点作为普通的WAP用户如何来比较方便的实现好的缓存策略?

江东(cosbeta):这个问题相当好,对于普通用户,我以前在博客上说,如果一个访问量一天少于5000的可能没有问题,但是处理服务器要有一个传输,这个你要考虑到,第一是装插件的时候千万要注意,不要什么插件都装,装了之后你会发现,你在页面里面速度相当的慢,因为我有一个朋友07年我在博客上留言,他的博客我经常不去,去了之后,两个都打不开,是两个不同的路径,再加上他的图片,总共500多K,所以我们首先考虑的就是让自己的页面尽量简单,装插件一定要注意一些。

提问:我问一个关于插件的问题,我碰到插件有关的问题上,原来是225,227,然后我就想,原来那些链接如果改变了,而造成了访问时间比较长,这个怎么避免呢?

江东(cosbeta):我当时为什么这样做呢,因为你可以初始化,后来没办法,你必须要写这个文件。后来一个好处在哪里,你跟PHP没影响,他直接找到你了。所以你要达到一个极限,一个极致,因为现在已经很棘手了,不可能有再棘手的了。你的问题好多朋友问过我,我建议是两个方式,你自己写,根据链接找。谢谢大家!

龚琼 本文来源:网易科技报道 责任编辑:王晓易_NE0011
分享到:
跟贴0
参与0
发贴
为您推荐
  • 推荐
  • 娱乐
  • 体育
  • 财经
  • 时尚
  • 科技
  • 军事
  • 汽车
+ 加载更多新闻
×

别再说读书无用,那是你没读懂

热点新闻

态度原创

阅读下一篇

返回网易首页 返回科技首页