Joomla/用PageCache缓存技巧加速你的网站
本条目主要介绍用于Joomla!平台的一些缓存技巧。主要涉及两个组件:JRE Cache 和 PageCache 。
为什么要用缓存功能[ ]
在过去,静态网站是不需要缓存的。因为静态网站不涉及数据库的存取,只是对文件系统的访问。
如今动态网站成为主流。动态网站的优点是容易做到内容与外观分离,容易实现网页内容的交互性(Interactivity)。当访客在浏览器地址栏输入一个网址来访问动态网站的某个网页时,在服务器端这个指令实际上是“兵分两路”:一边从文件系统中提取框架样式,另一边从数据库中提取内容数据,最后组合成完整的页面,返回给给浏览器,就是访客所看到的样子。由于每次访客的页面请求都要产生一次数据库查询,因此加重了服务器的负担。实际上很多动态网站的内容并不是每个页面都“动态”,很多页面内容也是在一段时间之内保持相对不变。
对于这些段时间内没有变化的内容,就可以将完整页面做一个“快照”,然后作为临时文件保存在某个目录中,在短时间内,如果有访客请求同样的页面,服务器就无需向数据库发起查询,而是直接将刚才保存的“快照”拿出来给他看 —— 将原来的“兵分两路”变成了“兵合一处”。这就是缓存。这样做的好处就是加快了前台页面打开的速度。因此,服务器端实施缓存的一般方式是“文件系统”,将页面的“快照”版本保存在缓存目录中。
缓存对Joomla!网站有什么意义[ ]
Joomla! CMS 是一个动态内容管理系统。核心本身就带有多个组件,其中的 com_content 是管理文章的。而大多数网站都有或多或少的文章页面。不难想象,这些文章页面在发布之后,很多都不再修改。还有“联系”页面,除非你的联系方式变了,否则在 Joomla! 建站后谁会经常去修改“联系”页面?
同样的,“友情链接”组件的内容估计也不是频繁更新;“产品介绍”栏目的内容也不是频繁更新;“专家介绍”栏目、“会员博客”栏目等等,这些内容有可能更新,但不会很频繁。
也就是说,对于一个确定在 1 小时内不会变化的页面,我们完全可以将它“缓存”59分钟。而对于一个月都不会更新的“产品介绍”栏目,我们至少可以缓存 29天!这将给服务器减少多少负担,同时给网站的打开速度加强多少!
缓存方式简介[ ]
Joomla对于缓存的必要性[ ]
遗憾的是,Joomla!默认的缓存时间是不区分范围的,只是笼统的问你“缓存多久?”。如果你网站上某些页面1小时更新一次,某些页面1天更新一次,某些页面1个月更新一次,那么你只能选择最短的缓存时间。如果你选择了比较长的缓存时间,例如缓存 5 小时,那么更新较快的页面在有了新内容之后,前台仍然不会体现出来。
如果你的网站上还有一个更新特别频繁的区域,例如:论坛。那么很可能每 2 分钟就有一个新的帖子出现。如果将缓存时间设置为 1 分钟甚至更短,那就失去了缓存的意义。而对于你网站上另一些更新并不频繁的页面来说,不能拥有较长的缓存时间也很遗憾。
还有一个更复杂的情形就是:在很多网站上,文章系统带有“访客评论”功能。文章本身可能很久都不再更新,但是评论内容可能每天都有新的内容产生。这两者同时显示在同一个页面上,又该如何选择缓存的模式?因此,我们对于理想的缓存方式的期望是:能够区别对待网站上更新频率不同的区域。
缓存方式的选择[ ]
除了文件系统这种缓存方式,还有数据库的缓存方式。后者就是将网页快照存放在数据库,当服务器端接收到浏览器的请求,就直接从数据库中取出快照传输过去,无需再到文件夹里面提取样式框架。这两者哪一种效果好?这取决于具体的服务器环境。如果服务器上数据库比较繁忙,那么用文件系统做缓存当然效果好;反之,就应该选择数据库作为缓存位置。
近年来,随着内存芯片价格不断下降,过去昂贵的带 ECC 校验的服务器内存也便宜了许多。因此很多服务器都开始拥有 4GB 甚至更大内存。基于内存的缓存方式也逐渐兴起。无论“文件系统”还是“数据库”,其实都是存放在硬盘上的;而内存就不同了,大家都知道,内存的读取速度与硬盘不可同日而语!因此,如果有条件选择基于内存的缓存方式,那当然最好!
可是,正如你所看到的,Joomla! 只提供了“文件夹缓存”这么一种途径,也不能区别对待不同的内容区域。因此,其缓存机制实在太有限了!这就引出了我们今天要介绍的两个工具——JRE Cache 与 PageCache
JRE Cache与PageCache的简单介绍[ ]
由于这些缓存增强组件需要凌驾Joomla! 自带的缓存机制,因此它们的安装过程都会自动修改核心文件代码,如果你将来不需要它们了,在卸载时又会自动还原核心文件。而且这两个组件都在后台参数中有“还原文件”的按钮,方便随时取消功能。
PageCache的使用[ ]
PageCache缓存组件的启用[ ]
PageCache的安装过程跟安装其它组件一样,安装结束后并未生效,需要到其后台的“设置”页面启用。后台控制面板如下图所示:
点击“设置”就能看到如下画面:
第一项参数就是是否启用。如果你想享用 PageCache 的加速功能,当然需要勾选启用。第二项参数是缓存时间,单位是秒。你必须根据网站上更新较频繁的区域来设定这个数值,例如:留言本可能每天四、五次,文章系统好几天才更新,那么就可以设置缓存时间为 2小时 —— 7200 秒,填写 7200 即可;
请注意上图中“缓存方式”部分,Database 、Eaccelerator 和 File 三项是正常文字样式,表示当前可用,而 APC、MemCache 和那个没有需要向下滚动才能看到的 Xcache 以斜体字出现,表示当前不可用。设定好参数后,点击右上角的“保存”按钮即可生效。
在PageCache中除外对指定组件的缓存[ ]
PageCache 有一个很好的功能就是允许除外对指定组件的缓存。例如,它已经内置了一个参数,指定不要缓存 FireBoard 论坛组件,这样的话,所有论坛的内容都不会缓存,访客就能及时看到当前最新的帖子。
如果你的论坛不是 FireBoard 呢?那么,我们就必须手动添加这个除外规则了。从 PageCache 的控制面板上点击“模块”,可以看到其中有 no cache 模块,就是设定“不要缓存”的内容的。
这里有两种“不缓存”设定方式,一个是 no_cache_database,一个是 no_cache_file,你随便选择一个都可以,只要记着设置完后要发布你所选择的模块。例如上图中,前者是发布状态,而后者是未发布状态。
参考来源[ ]
http://www.joomlagate.com/article/joomla-seo/make-a-faster-joomla-website-with-caching-tricks/
Joomla! SEO教程导航 |
---|