《Drupal 性能优化指南》

《Drupal 性能优化指南》 Tony

记录一下 Drupal 优化心得。

Drupal 系统环境篇

Drupal 系统环境篇 Tony

Drupal 8/9

  • 使用 Nginx 来代替 Apache 。
  • PHP 内存限制设置为 256M。
  • PHP 8.1 安装 opcache, apcu, 和 memcached/redis 扩展。
  • 如果 Drupal 站台内容更新小于1篇/天,推荐最小缓存周期为24小时。

Drupal 7

  • 使用 Nginx 来代替 Apache 。
  • 使用更快的 PHP-FPM 来代替 mod_php 。
  • 在 PHP 5.5 以下的环境里使用 Alternative PHP Cache (APC) ,或使用更高版本的 PHP 例如 PHP 7 。(见:Drupal7在不同环境下的效能
  • Syslog 能把日志写入系统而不是 MySQL 里。
  • 关闭 配置 » Cron 里的计划任务,改为通过系统的 cron 或第三方 cron 服务从站外主动运行 cron(http://www.yourdrupal.com/cron.php),这样能减少缓存到期需要执行 cron 时的第一个访客因执行任务所等待的时间。
  • 如果 Drupal 站台内容更新小于1篇/天,推荐最小缓存周期为12小时或以上。

Drupal 缓存篇

Drupal 缓存篇 Tony

Drupal 9

系统级

模块级

  • Antibot 支持缓存的防止 SPAM 模块。

 

Drupal 7

缓存对 Drupal 的效能影响非常的大,以下分别介绍系统级和模块级的两种缓存实践。

系统级

模块级

  • Entity Cache 模块,效果立竿见影。
  • Display Cache 模块,views 较多的站台可以考虑使用。
  • Advanced CSS/JS Aggregation 能通过合并/压缩 CSS/JS 的数量来提高 HTML 加载速度。(见:AdvAgg + CDN 为 Drupal 加速
  • Image Lazyloader 能延迟图片加载,并在滚动时才优雅地载入来减少页面加载时间。适合文章里图片较多的站台,毕竟要考虑本身模块和第三方库的体积。
  • Speedy 优化 JS 文件。
  • Fast 404 为 404 页面“瘦身 ” 。
  • Missing Module 能检查在系统后台里标记为启用但实际上物理文件已经删除了的模块,站台上线前用这个模块再检查一遍,能减少因为要 file_scan_directory() 而造成的额外查询时间。
  • Drupal 默认是不为已登陆的用户进行缓存的,Authenticated User Page Caching (Authcache) 模块能实现这类要求。

Drupal 配置的最佳实践

Drupal 配置的最佳实践 Tony

Drupal 9

TBA

Drupal 7

  • 根据自己的网站需求关闭不必要的模块,例如当你使用不需要依赖 Color模块 的主题时关闭 Color ,目前没有投票的需求就关闭 Poll模块 。
  • Statistics模块 会记录每一个点击,这是需要持续地消耗服务器资源的。如果你的服务器上有 Awstas 或者 GoAccess 时可以考虑关闭 Statistics ,不考虑墙的情况下还可以用 Google Analytics 。
  • 一旦配置好你的网站,关闭 Update manager模块 ,这样能减少服务器跟drupal.org的链接。
  • 在 配置 » 开发 » 性能 里打开缓存,并钩选带宽优化下的三个选项(压缩缓存页面/合并和压缩CSS文件/合并 JavaScript 文件),关于最后的 合并 JavaScript 文件 选项,建议在选中优化后再测试一下页面的js功能是否有缺失。