使用性能模块来引入Drupal并提高100倍速度
CMS有许多选择,如WordPress、MovableType、concrete5等,比较适合设计师和编辑使用,但Drupal具有更好的通用性,因此被视为面向程序员的CMS,广泛用于大型网站建设。
关于Drupal来说,它追求了通用性,但也面临着功能繁多、庞大而笨重的困境。
为了解决Drupal所面临的困境,我们选择了一些能够提升性能的模块集合。
仅仅依靠优化实现是有限的,因此请务必积极引入这些模块。
另外,由于目标仅限于Drupal模块,因此在列表中省略了OPCache、nginx等中间件,但包括了与Drupal和应用程序级别可协同的内容。
我们假设环境为Drupal 7(部分Drupal 8兼容)+ PHP 5.6或PHP 7.x。
用户缓存(KVS)、Drupal缓存系统
Memcache API和整合(内存缓存)
可以使用memcached的用户缓存(键值存储)功能,只需启用模块即可进行对象缓存,并可视化地显示缓存命中率,从而确认效果。

尽管APC模块的用户缓存(KVS)被认为更快,但是这个Memcache模块有一个重大优势。
那就是可以利用Memcache API来自定义缓存逻辑,因此只要实现了,就能够实现对各种实体的缓存。
另一种用法是,当需要处理大量缓存数据时,可以将memcached分布到与Web服务器不同的机器上,以减轻内存负载,这也是一种有效的方法。
安装数量31,510
下载数量733,824
推荐度★★★☆☆
内存缓存存储(memcache_storage)
只需要一个选项,以下是用中文对上述内容进行的翻译:
尽管Drupal标准缓存的管理是在数据库中进行的,但即使启用缓存也无法实现显著的速度提升。但是,只需启用memcache_storage,就可以将所有缓存存储位置转移到Memcached中。
因此,如果数据库性能成为瓶颈,可以期望加速。
安装数量 2,557
下载数量 23,473
推荐度为 ★★★☆☆
用户认证页面缓存(authcache)
可以缓存匿名用户页面(静态页面)和认证用户页面(动态页面)的两种页面。

然而,仅仅启用并不能实现管理界面的加速,还需要对每个动态页面进行设置。
不过,并非所有动态页面都适用,只有以下的实体可以进行协作。
与authcache集成的实体模块组
区块、面板、评论、字段、论坛、菜单、节点、页面管理器、投票、视图、Varnish存储
例如,Panels面板的缓存设置默认情况下提供了两种缓存类型:“No caching”和“Simple cache”。选择“Simple cache”后可以指定缓存期限和缓存精确度(按参数或上下文)。

authcache启用后,可以从Panels面板的缓存设置中选择缓存类型“Authcache”,并且可以指定缓存持续时间、按用户和按URL来指定缓存精度,通过这些组合可以将动态页面缓存化。
还可以选择是否支持Varnish缓存的”ESI”。
如果选择了Varnish缓存的”ESI”,那么这个Panels面板将成为Varnish缓存的目标。
也就是说,使用Panels设计的动态页面将被放入Varnish缓存中。

重要提示是,如果设置错误,例如在我的页面上显示他人的信息等,很容易发生由于缓存控制不良而导致信息泄漏的情况,因此需要了解该系统规格的人来进行设置。
安装数量3,080
下载数量59,483
推荐度★★★★★
缓存到期(过期)
提供一种当Varnish等代理缓存或Drupal内部缓存以及其他任何缓存的有效期到期时触发的挂钩。
此外,还可以进行设置,使得在用户执行特定操作时自动清除缓存。

這樣一來,就可以避免不小心保留緩存帶來的風險。
安装数量 26,940
下载数量 148,591
推荐度 ★★★★★
文件缓存(文件缓存)
与APC和Memcached不同,这是一种无需服务器设置的通用缓存系统,具有出色的适用性。
然而,由于缓存数据被文件管理,速度较慢。
安装数量 2,406
下载数量 15,417
推荐度 ★★☆☆☆
APC(APC)可以用下面的方式来本土化翻译:
为了使用APC / APCu作为Drupal标准缓存的后端,必须使用APC或APCu PHP扩展来启用APC模块。
目前,APC的支持版本为PHP5.5。而APCu的支持版本则为PHP5.5以及PHP7.0之后(在PHP7.0之后,有适用于APCu的测试版可用)。
如果想在PHP5.6环境下使用用户缓存(KVS),那就要使用memcache。(顺便一提,PHP5.6以后不再支持之前可用的APC操作码缓存,所以要引入OPCache)
安装数量 5,071
下载数量 77,835
推荐程度 ★★☆☆☆
Redis(redis)
可以与支持复制功能的缓存系统”Redis”进行配合。
它与Memcache一样,在内存中管理用户缓存(KVS),因此速度很快。据说,如果Web服务器有多台的情况下,与APCu或memcached相比,Redis的效率更高。
注:如果安装了repcached,可以使memcached实现复制功能。
安装数量 4,964
下载数量 65,910
推荐度 ★★★☆☆
提升(提升)
如果在共用伺服器上運行Drupal,可以選擇最佳選項,即在不設置特殊的中間件的情況下,將匿名用戶的頁面(靜態頁面)快取並加速。
只要禁用Drupal标准缓存,并启用Boost模块,使用方法就可以了。

如果与最新版Authcache一起使用,可以将面向认证用户的动态页面缓存起来。(有报告称与最新版Authcache合并使用时无法正常运行)
如果与以下模块组合使用,缓存将更加有效。
* Boost 爬虫(boost_crawler)- 与 Boost 捆绑的子模块
* 缓存过期(expire)
* 快速 404(fast_404)
* 全局重定向(globalredirect)
* HTTP 并行请求和线程库(httprl)
如果您在使用專用伺服器並允許安裝程式等情況下,並且具有足夠的記憶體容量,我們建議您安裝更高性能的Varnish。
安装数量为33,448个
下载数量为252,085个
推荐度为★★★☆☆
JavaScript和CSS压缩系统
高级CSS/JS聚合(advagg)
高功能的CSS/JS文件缓存模块,用于加速主题。
与Drupal标准的CSS/JS文件缓存进行比较,可以进行压缩(去除空格和换行)、文件合并(Aggregation)以及是否启用gzip压缩等高级配置。
由于存在Drupal缓存和nginx gzip压缩结合导致文件编码损坏造成CSS崩溃的报告,为了预防这种情况,使用该模块预先进行gzip压缩是明智的选择。
さらにDNSプロフェッチを利用してCSS/JSファイルの読み込み時間を短縮化してくれる。
インストール数 22,348
ダウンロード数 309,910
オススメ度 ★★★★★
CDN和代理服务器
Varnish HTTP Accelerator Integration(varnish)
与高速反向代理系统“Varnish”进行协作的模块。这个模块仅仅支持匿名用户页面(静态页面)与Varnish缓存“ESI”的互动。

Authcacheモジュールとの併用により、認証ユーザー向けページ(動的ページ)もVarnishキャッシュ「ESI」ができるようになるため、Authcacheモジュールとセットで有効化されることが多い。
インストール数 17,903
ダウンロード数 332,426
オススメ度 ★★★★★
快速(速度快)
Varnish利用を前提としたCDNサービス「Fastly」と連携を可能にするモジュール。
Fastlyモジュールによって、超高速リアルタイムパージ(※)の恩恵に加えて、キャッシュロジックのカスタマイズが可能であり、動的コンテンツもCDNキャッシュに載せることができる。
※150ms内にキャッシュされたコンテンツを削除する機能
そのため、CDNサービスにありがちなサイトの更新情報がなかなか反映されないなどのトラブルが起こりにくい。
Drupal8リリースパーティでも紹介されたそうで、Drupal連携としてはまだ実績(※)は少ないが、とても期待されていると言える。
※Twitter社やGitHub社が採用しており世間での大規模システムでの実績は十分にある。
Fastly是在Drupal加速措施中非常值得期待的选项,但在这个列表中是唯一一个收费的,因此使用门槛较高。尽管我很期待,想给它五星的推荐评级,但暂时给了四星。
安装数量 194
下载数量 2,800
推荐程度 ★★★★☆
清洗(purge)
如果使用Akamai或CloudFlare等CDN,它们会明确地向CDN通知缓存更新,这样可以防止过时的CDN缓存存在很长时间。同时,存在着类似功能的模块,如Akama(akamai)、CloudFlare(cloudflare)、Acquia Purge(acquia_purge)。
安装数量为2,455
下载数量为32,133
推荐程度为★★★☆☆
总结
为了提高Drupal的性能,我对缓存模块周围进行了各种调查。
如果您在专用服务器上有自由修改程序结构的环境,我认为最有效的组合是使用「fastly」+「varnish」+「authcache」+「advagg」+「memcache」+「expire」。
在设置自定义页面时,我觉得在模块上使用menu钩子以路径定义的方式实现是不错的选择。但是,如果使用Panels进行设计,就可以享受到缓存模块的好处,这是一个重大的优点。
此外,通过使用视图设计的页面可能需要联接大量的表格,导致处理速度变慢的开销增加,无法接受,但是使用缓存模块组可以解决这个问题的情况可能会增加。
如果有一个环境限制了共享服务器和程序配置的定制化,我认为使用”boost”+”filecache”+”advagg”+”expire”的组合可以在不依赖服务器环境的情况下获得相当不错的性能。