跳转到主要内容
蓝眼泪 提交于 6 August 2014

原文:http://friendlymachine.net/posts/2011/5-ways-to-improve-performance-in-drupal

       有一项研究结果很明确,响应速度快的网站更容易吸引和留住访客。用户对于加载时间过长的网站并没有什么耐心,他们的耐心是毫秒计的。这里有5种方式加快网站的速度。

Drupal Cache

       使用Drupal内置的cache模块可能是提高网站性能最简单的方式了。然而,一些Drupal的新用户会忽略这一功能,因为它默认是关闭的。在网站上启用Cache模块,然后进入“配置”下的“性能”设置选项卡。

       启用caching后,Drupal会将数据库查询存储在一个特殊的表中,这个表允许更快的响应时间。关于caching有件事需要注明,Drupal会创建数据库中数据的副本,这个副本可以摆脱与地层数据的同步。

       可以通过设置”Minimum cache lifetime"(最低缓存生命周期)和“Expiration of cached pages"(过期的缓存页面)选项帮助管理caching。当然,“Clear all caches“(清楚缓存)将清除Drupal内的缓存数据。

       在"性能"设置页也有聚合聚合CSS和JavaScript文件的选项。这个也可以改善你网站的速度,但是这些设置在开发中部署会引起一些令人头痛的问题,所以在网站生产环境下要有所保留。

Boost

       另一种改善网站性能的好方式是“Boost”模块。Boost模块的一大优势是它在共享宿主环境中起到良好的作用。一个潜在缺点是,如果你在Drupal领域没有相当的经验,它可以设置工作。

       Boost需要Poormanscron (在Drupal7核心里)和Clean urls是开启的。你需要访问.htaccess和robots.txt文件以配置模块使其正常工作。也就是说,Boost是一种比Drupal内置缓存更能加快网站速度的方式。它忽略了Drupal/PHP/SQL进程,而是直接工作于HTML或html.gz文件。

       有很重要的一点需要说明Boost只能提高对匿名用户的性能。如果你有大量的已认证用户,下一种解决方式对你来说更好一些。

Memcached

       另一种改善网站性能的高级解决方式是Memcached,但它不是对每个人都适用的。首先,它不在共享宿主环境下工作。第二个潜在问题是你需要能够安装并配置附加的软件,所以如果你在自己的主机上没有这个权限,需要求助于系统管理员。

       Memcached有三个组件:Memcached软件,一个PHP扩展和Drupal Memcached模块,他们共同提供数据库中存储的使它非常快的调用和呈现页面的内存数据。在“如何实现Memcached“文档中对如何获取并运行Memcached有一个很好的说明,但如果你需要更多帮助,Drupal社区是一个很好的选择。

  很有趣的一点是许多Drupal用户报告一起使用Memcached和Boost是成功的,如果你的网站匿名用户和认证用户都有的话,两种方式结合使用将是更好的选择。

Varnish Cache

       Varnish Cache是改善网站性能的另一种方式。像Memcache一样,Varnish Cache也有需要安装的附加软件。这个缓存HTTP反向代理系统是相当有技术性的,但是如果你想要一个闪电快速的解决方式,它是值得投入的。

  除了Varnish Cache软件之外,还需要启用Drupal模块Varnish HTTP Accelerator Integration.根据模块页面内容所述,Varnish将以比apache更快的速度加载页面,将近3000页每秒。

  要使用Varnish,你需要Drupal7或PressFlow。详情请查看Varnish页面。

MongoDB

       这里有一种除了缓存外还可以加快网站速度的方式。MongoDB是一个可以用于Drupal站点的"NoSQL"类型的数据库。是的,这意味着它不会有MySQL的后端。这个数据库文档存储JSON文档,而不是记录,因为我们很多人都很熟悉它。这就是MongoDB避免这些资源占用连接语句。

       另一件事是MongoDB数据库是存储在内存中的,因此写的非常快。MongoDB确实是偶尔写在磁盘上的,但这样的流量大大减少。数据库存储在内存中有一个问题是在服务器崩溃的时候会丢失部分数据。不过,在最新版本中,这个问题可以通过简单的配置调整解决掉。

       NoSQL数据库并不适用于每个人。但事实证明它适用于大型的生产环境的网站,我们可以看一下Craigslist, Disney 和 Foursquare ,此为明证。不过要起启用和运行MongoDB也需要Drupal模块。

 

Drupal 版本