本文作者:我爱技术网

Drupal网站中批量设置Views替换Taxonomy Term分类页面

我爱技术网 3个月前 ( 07-24 ) 2090
摘要: 最近发现有一台阿里云RDS数据库服务器负载持续很高,CPU总是占满,当前连接数超过几十的时候网站就被卡得不能动了。除了升级RDS配置以外,可以仔细检查慢查询日志,发现这种查询特别多...

最近发现有一台阿里云RDS数据库服务器负载持续很高,CPU总是占满,当前连接数超过几十的时候网站就被卡得不能动了。除了升级RDS配置以外,可以仔细检查慢查询日志,发现这种查询特别多:

SELECT node.title AS node_title, node.nid AS nid, node.sticky AS node_sticky, node.created AS node_created 
FROM node node 
WHERE (( (node.status = 1 OR (node.uid = 0 AND 0 <> 0 AND 0 = 1) OR 0 = 1) AND (node.nid IN (SELECT tn.nid AS nid FROM taxonomy_index tn WHERE ( (tn.tid = '168') ))) )) 
ORDER BY node_sticky DESC, node_created DESC 
LIMIT 11 
OFFSET 2600

  这显然是一个Drupal网站的分类页面,翻页到后面产生的MySQL查询语句。执行的时间在2-4秒左右。

  但其实分类页面的排序不重要,而且页面状态、当前用户也基本上是统一的、无需判断的,所以简化以上查询语句成这样:

SELECT node.title AS node_title, node.nid AS nid, node.language AS node_language 
FROM node node 
WHERE (( (node.nid IN (SELECT tn.nid AS nid FROM taxonomy_index tn WHERE ( (tn.tid = '168') ))) )) 
LIMIT 11 
OFFSET 2600

  执行的时间大约几十-几百ms,下降了1、2个数量级,所以这样的优化是很有效果的。

  查到我以前就写过几篇类似博客《Drupal中启用Views来替代原生的分类页面》、《替换Views翻页功能来降低Drupal网站数据库负载》、《用Devel模块排查Drupal速度慢等性能问题》。

  于是设置一个站的Views如下:

Drupal网站中批量设置Views替换Taxonomy Term分类页面  drupal 第1张

  其中红框是改动了一些的地方,将这样设置的Views导出、复制到自定义模块的.views_default.inc文件中,并使用drush cc all批量清理系列站的缓存,就可以把这个Views应用到各个网站中。

文章来源:https://jamesqi.com/%E5%8D%9A%E5%AE%A2/Drupal%E7%BD%91%E7%AB%99%E4%B8%AD%E6%89%B9%E9%87%8F%E8%AE%BE%E7%BD%AEViews%E6%9B%BF%E6%8D%A2Taxonomy_Term%E5%88%86%E7%B1%BB%E9%A1%B5%E9%9D%A2

推荐阅读:

27个简单方法教你如何增加博客流量,值得一看

UltraISO安装原版Win10教程 小白必看的U盘安装

推荐软件鲁大师v5.15.18.1125去广告精简优化版

文章版权及转载声明:

作者:我爱技术网本文地址:http://wajsw.com/blog/1541.html发布于 3个月前 ( 07-24 )
文章转载或复制请以超链接形式并注明出处我爱技术网