欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

Views+Panels的性能问题

shiping1 的头像

Views+Panels的性能问题

赞成!
0
否决!

当网站大量使用了Views的时候,网站加载速度明显变慢。而且大量的Views内容 管理也很成问题,Views生成的HTML还有大量辅助代码和css类,看着很不舒服。Panels也是如此。即便使用了优化Drupal的那些常见选项和模块,效果也不大。但如果放弃Views的话,开发又回到了代码时代,丧失了简单和效率。

请问下,有没有鱼与熊掌兼得的办法?其它类似Views的模块?优化Views的方法?

 

5 个回答

赞成!
0
否决!

1,服务器

Web服务器建议,推荐使用HAProxy/Varnish作为前端代理,Nginx作为Web服务器,php-fpm作为FastCGI处理PHP程序,当然也可以使用Apache作为PHP后端处理,但是不推荐使用apache作为Web节点服务器。

Drupal有一个Varnish相关的模块http://www.drupalla.com/project/varnish

2,使用Drupal的Pressflow版本

Drupal本身没有太多考虑性能的优化,Pressflow是一个专门针对Drupal的优化版本,包括支持Mysql Master-Slave等等。对于大型网站,选择Pressflow是必须的。

http://pressflow.org/

3,使用静态页面缓存(Boost模块)

静态页面是最快的,没有之一!
因此静态页面缓存是最佳选择,尽量把页面动态的部分独立处理,用ajax/iframe调用,整个页面是静态页面,部分用ajax刷新(当然用shtml 也可以)。 Boost模块经过稍微调整和修改,可以设置某些Roles(比如一般认证用户)也读取静态缓存(apache/nginx的rewrite),并且可以 很好的工作在Apache和Nginx上面,并使某些角色,比如管理员,不读取静态页面。对于一个普通网站,90%以上的都属于普通认证用户和匿名用户, 因此,经过这样修改可以大大提高性能。

具体如何使用Boost模块已经如何让登录用户也使用Boost模块,可以参考这篇文章,让Drupal/Boost模块发挥到极致。
Boost 模块地址:http://www.drupalla.com/project/boost

4,opcode

Drupal 需要load相当多的PHP文件,所以opcode是必须的,MUST!
实践证明eAccelerator比APC和xCache好一点,注意:APC的某个版本在NFS环境下有bug,不能正确缓存,所以建议使用eAccelerator。

5,使用CDN

要想使页面加载较快,必须使用CDN。(原理请查阅相关文档)
CDN Drupal有两个模块 Parallel 和 CDN,Parallel比较简单,推荐使用。但是Parallel目前已经并入CDN模块,所以还是得要下载CDN模块http://www.drupalla.com/project/cdn

 

6,数据库结构合理、分表、分库

不要使用content-profile模块。
该模块把profile信息存储成一种你node-type,问题是这样会导致node表比较大,但是profile的node除了uid之外其他都是无 用信息。加入一个网站有上百万、千万用户,再有很多文章(node),这样node表将会非常大,尤其是一个user有很多profile的node,比 如5个,这样node表就会有5倍的user数量的node。导致查询node、user都没法处理,views之类的工具更是没法用,因为views生成的SQL将会非常慢。

把user相关表分出去,到独立的数据库,这样可以方便其他站点,比如子站,共享用户信息。

对于大型网站,不推荐使用太多第三方模块,因为大多模块都是基于node,如果跟node没有关系的独立数据,建议自己写模块来读写,这样方便数据的拆分和优化,又减轻了node表的压力。所以再使用模块前,必须了解模块的工作机制。

 

 

 
赞成!
0
否决!

谢谢诗人的回答。

是,正如你的回答中黑体字所述,views之类的工具没法用。我愁的就是views工具的性能问题。但如果不用views,又如何享受类似views的便利功能呢?是有其它的效率更高的模块吗?

如果没有,只能自己编写模块和主题代码,那合着就是回到了代码时代,这样一来用轻量级的PHP框架岂不是更方便些,反正都是要大量的编写代码,学习曲线也低,drupal的优势何在啊?

 
赞成!
0
否决!

纯panels + VIEWS站一个 yourhelps.com

 
赞成!
0
否决!

诗人,想请教一下,你在第三点中说到的boost 模块 如何让登录用户也使用 缓存,我看了你提到的那篇文章“让Drupal/Boost模块发挥到极致”, 还是不太清楚,请指点一下具体如何操作。

 
赞成!
0
否决!

可以试一下 Display Suite + views 这个组合

 



来自 http://www.drupalla.com/node/668
普通分类: