dashan 提交于
论坛:
钩子回调是为了让Drupal获得最大的灵活性和开发的便利性,这一点对性能的损耗是肯定的。但同时 Drupal 有很多其它如缓存、异步调用等手段来弥补性能的损耗甚至是增强性能,从而使 Drupal 在扩展性、灵活性与性能方面取得非常好的平衡。
1.drupal 匿名用户访问时,才是整个页面缓存,用户登录时是页面部分缓存.
2.drupal 缓存有多种形式,默认为数据库缓存
3.每个页面初次访问会花点时间生成缓存,再次访问就直接取缓存数据了.
4.打开css和js以及页面的压缩,减少页面大小和请求次数.
因为drupal在运行cron的时候,特别是建立search索引,放数据库中写数据的量是惊人的。如果每写一条mysql都往硬盘里写一下做了什么,然后再处理下一个请求。自然会很慢,频繁i/o会让机器负载高。而且你从top上看不出来。
很多人刚接触Drupal的时候,总是感觉Drupal很慢,即便是在本地,装了几个Drupal模块以后,感觉就跑不动了。这个本身和本地环境的配置也有关系,建议修改php.ini文件,将PHP的内存,执行时间都调的大一点。这样就不会感觉慢了。
可以在php.ini里面将memory_limit设置的大一点,我通常设置为512M,默认好像是32M,还是64M。
可以装个APC,XCACHE这样的OPCODE缓存,这个对于Drupal的性能提升是最明显的。
模块不要装太多,尤其是安装量比较小的Drupal模块,更应该注意。模块太多,对于性能的拖累也是非常明显的。
网站上线后,建议开启所有的缓存。
性能优化的关键就在于缓存。drupal有各种层次的缓存技术。
Drupal6比Drupal5慢, Drupal7比Drupal6慢,Drupal8比Drupal7慢。其中,Drupal7的性能问题最为突出,性能比Drupal6慢很多。
Entity API模块用的时候,要小心,很吃内存,也存在潜在的性能问题。顺便说一句,Commerce比Ubercart慢,具体慢多少,没有实际测试过,这是应该的,Commerce大量的使用Entity API,对性能影响很大,性能问题一直也是让commerce头疼的问题。
个人心得:
匿名用户全部采用缓存,注册用户采用区块缓存,固定的几个链接写在一个区块中调用,模块升级检测设置为一个星期检查一次;这些设置完成后基本能满足大部分人的需要了。
相关文章:
- 登录以发表评论
让drupal的首页快速打开
使用boost模块,把首页设置成index.html,利用boost生成静态缓存。明显能感觉到打开首页速度的提升。
- 登录以发表评论
dashan 答复于 永久连接memcache 模块
- 登录以发表评论
dashan 答复于 永久连接1G内存的vps足够使用
安装这个模块后,1G内存非常不错,很流畅,值得推荐这个模块。
- 登录以发表评论
dashan 答复于 永久连接Memcache statistics 错误
一个环境中中启动多个Memcache,会导致错误,出现Memcache statistics无法显示网页的提示出来,解决办法:重启服务器。
- 登录以发表评论
dashan 答复于 永久连接512Mvps使用Memcache速度问题
在512M的内存中配置Memcache这个环境,会让整个速度受到严重的拖累。建议在1G以上内存中使用,这个是实战总结的经验
- 登录以发表评论
dashan 答复于 永久连接Boost用来为Drupal生成静态的HTML页面
Boost模块的功能,用来为Drupal生成静态的HTML页面,可以极大地提高效率.它自身带有一个爬虫,用来判断过期的页面,并重新生成静态页面.能够支持Apache, Nginx等主流web服务器,效率高于Varnish.
Apache需要启用mod_rewrite ,
另外需要启用简洁URL
装好后,他有提示怎么设置:
1:Administer > Site configuration > Clean URLs 启用简洁url。
2:在性能设置菜单Administer > Site configuration > Performance > Boost settings 进行设置
3:改写.htaccess 文件,有例子参考
4:改写robots.txt,添加
# Files
Disallow: /boost_stats.php
Disallow: /CHANGELOG.txt
5:Administer > Site configuration > Performance 启动drupal的cache缓存机制。
6:检查状态报告:admin/reports/status 。确保boost通过。
OK了,换个匿名用户访问,你就看到在第二步设置的目录下生成了htm文件。
- 登录以发表评论
dashan 答复于 永久连接Authenticated User Page Caching (Authcache)
让注册用户用上缓存的静态页面
- 登录以发表评论
dashan 答复于 永久连接drupal会加载所有的region和在region中的block
默认的条件下,drupal会加载所有的region和在region中的block;无论这个region是否被你在template(tpl.php)中删除,只要你在info文件中声明了,他就会加载这个region中所有的blocks.这会相当杀性能。
- 登录以发表评论
dashan 答复于 永久连接一个综合的缓存介绍文章
http://www.cameronandwilding.com/blog/jos%C3%A9/how-make-drupal-perform-and-scale-rockstar
- 登录以发表评论
dashan 答复于 永久连接Drupal在大量logged user并发情况下的瓶颈
Drupal在大量logged user并发情况下的瓶颈,在于执行Drupal代码的CPU时间,而不是在于数据库或者其他地方。之所以出现这样的情况,和PHP本身的执行机制和 Drupal的实现方式有关。Drupal在生成一个非cached的页面时,不管这个页面多么简单,都要执行一个完整的bootstrap过程,即使只启用了最少的模块,这个过程也要调用几十个PHP文件,执行成千上万行PHP代码。而PHP的机制又决定了没有任何PHP代码或者对象能够驻留内存,每次响应请求都必须执行完整的初始化工作。而anonymous user之所以快,是因为Drupal在执行cached page的时候,不会执行完整的bootstrap过程,它先检查是否cached page,是的话就读取缓存,然后结束工作。这样当然就快了。
- 登录以发表评论
dashan 答复于 永久连接另外一种思路是代码本身的优化。
- 登录以发表评论
dashan 答复于 永久连接block级别的优化,hook_block_list
http://www.drupalcoder.com/blog/improve-drupals-performance-by-not-execu...
这是一篇非常强大的文章。
原理是这样的:默认的条件下,drupal会加载所有的region和在region中的block;无论这个region是否被你在template(tpl.php)中删除,只要你在info文件中声明了,他就会加载这个region中所有的blocks.这会相当杀性能。
作者想办法绕开了这个问题。
- 登录以发表评论
dashan 答复于 永久连接