SlideShare a Scribd company logo
1 of 14
Download to read offline
by Robbin Zhao (http://www.drupal001.com)




                 PHP和Drupal性能优化系列(二)

                              赵高欣 (Robbin Zhao)
                              zhaogaoxin@gmail.com
                              http://www.drupal001.com




Saturday, 14 July, 12
by Robbin Zhao (http://www.drupal001.com)



                          目录
                        从网站的用户体验说起

                        让PHP异步执行


                        Drupal最佳网站架构模式


                        Boost的缓存管理和性能问题

                        Varnish的缓存管理



Saturday, 14 July, 12
by Robbin Zhao (http://www.drupal001.com)



 浏览器处理网页请求分析
         URL请求的几个阶段:
           DNS查询
           建立TCP连接
           发送HTTP请求 (GET只发送头部)
           等待服务器相应
           开始接收服务器输出
           接收完成

                        减少上面任⼀一环节的时间,就能提高网页响应时间!




Saturday, 14 July, 12
by Robbin Zhao (http://www.drupal001.com)



 浏览器处理网页请求分析
        我们可以优化的:
         DNS查询 (预解析)
         等待服务器相应 (代码的执行时间)
         开始接收服务器输出 (减少传输、压缩)
         接收完成


        FireBug:




Saturday, 14 July, 12
by Robbin Zhao (http://www.drupal001.com)



 让PHP异步执行

                 浏览器     PHP进程


                                               PHP异步执
                           输                  行可以最快的响
                 浏览器
                           出                  应用户操作。




                        PHP进程继续
                        (和输出无关)




Saturday, 14 July, 12
by Robbin Zhao (http://www.drupal001.com)



 PHP异步执行演示
         PHP异步执行的使用
           1. 开启后台进程 (Linux/Windows后台命令: popen)




           2. PHP基于HTTP协议的异步代码 (ignore_user_abort)




Saturday, 14 July, 12
by Robbin Zhao (http://www.drupal001.com)



 Drupal最佳网站架构




                                 1.   使用Varnish并做双机热备
                                 2.   Varnish之前可以再有LB
                                 3.   对静态内容使用独立域名
                                 4.   用Nginx提供静态内容
                                 5.   动态页面Nginx代理到Apache
                                 5.   Apache比FastCGI稳定
                                 6.   Memcache是必须的
                                 7.   GlusterFS可以做NFS



Saturday, 14 July, 12
by Robbin Zhao (http://www.drupal001.com)



 Boost的缓存管理
       1. Boost为每⼀一个URL生产⼀一个缓存页面。
          包括URL中不同的query,也会生产⼀一份静态缓存,我们需要忽略
       ⼀一些对输出没有影响的参数。在boost_init里面添加如下3列:




      2. Boost只缓存匿名用户访问?
         有些页面,登录用户和匿名用户展示同样的结果。(给所有用户缓存⼀一份)
         有些页面,所有的登录用户看到的结果都⼀一样。(给所有登录用户缓存⼀一份)

          强制缓存,修改全局变量:$GLOBALS['_boost_should_cached'] = TRUE
          如果要使用缓存,还得修改.htaccess文件。


Saturday, 14 July, 12
by Robbin Zhao (http://www.drupal001.com)



 Boost的缓存管理
      3. 缓存文件存在,如何让Boost强制覆盖已有文件,生成最新的缓存
         在自定义模块里添加如下代码:




      4. 如何修改Boost缓存文件的文件名或者目录
         默认情况下,Boost跟URL生成对应的缓存文件,如果要修改文件名,在自定义代
      码的任何位置,修改全局变量$GLOBALS['_boost_path']即可。如下示例:
        hook_preprocess_page(&$vars) {
          if (vars['node']->type == ‘typeA’) {
            $GLOBALS['_boost_path'] = ‘typeA/’ . $GLOBALS['_boost_path'];
          }
        }

       注:要使用修改后的boost缓存,必须修改相应的Apache URL Rewrite的设置。




Saturday, 14 July, 12
by Robbin Zhao (http://www.drupal001.com)



 Boost的缓存管理
      5. 如果Drupal开启JS/CSS压缩,重建缓存时JS/CSS文件名会变。
         这时,Boost生成的静态页面缓存会失效,因为JS/CSS引用找不到了。
         对于⼀一个大型网站,重新生成所有的静态页面缓存是灾难性的。

          修改drupal_get_css和drupal_get_js,如下所示,删掉querystring




      6. 如果JS/CSS聚合文件存在,如何让Drupal强制重新生成最新文件

        A方案:把生成的js/css和文件名记录到数据库,hook_menu(js|css)
        B方案:通过ignore_boost_query忽略某⼀一参数,如:flush
         然后删除js/css文件来强制重新生成。如drupal_build_css_cache/
      drupal_build_js_cache函数中,添加如下:




Saturday, 14 July, 12
by Robbin Zhao (http://www.drupal001.com)



 Boost的性能问题
         boost_nodeapi的性能问题
          由于node的更新、添加等操作都会触发boost的缓存检查操作,这是⼀一个
          缓慢的操作!!!
         node_save的性能问题
          node_save会清除缓存,因为清除缓存是⼀一个很耗时的操作,我们参考⼀一下源
          码:



            因此,在无需清除缓存时使用:$conf[‘node_save_clear_cache’] = FALSE;

         同理,我们修改⼀一下boost_nodeapi函数




Saturday, 14 July, 12
by Robbin Zhao (http://www.drupal001.com)



 Apache配置小提示
           A.
           Boost的修改会经常需要修改Apache的配置文件,因此
           在Apache中如何调试URL Rewrite?

           在配置文件中加入断点,然后用firebug或http工具请求URL,打印你想要的变
           量。(可以参考http://www.drupal001.com/上详细介绍)
           RewriteRule (.*) http://www.baidu.com/?host=%{HTTP_HOST},rurl=%{REQUEST_URI} [R=301,L,QSA]



           B.
           提高Apache的性能,AllowOverride需要None

           为了使用.htaccess,更好的办法是include在主配置文件中,如下:
            <Directory /var/www/html/www.zinch.cn/html/>
                 AllowOverride None
                 Include /path/to/your.htaccess
            </Directory>




Saturday, 14 July, 12
by Robbin Zhao (http://www.drupal001.com)



 缓存!Varnish可以做得更多
     a. 为相同的结果设置相同的hash
     b. 让Drupal输出的HTML结果,也缓存到Varnish。修改vcl_fetch
          if (req.url ~ "path/" ) {
              unset beresp.http.Cache-Control;
              unset beresp.http.Pragma;
              unset beresp.http.Expires;
              set beresp.ttl = 10m;
              set beresp.do_gzip = true;
              set beresp.http.Cache-Control = "max-age=600";
          }
     c. Varnish缓存管理
        varnishadm命令行 ban.url (3.x)
        telnet
        Expect
               set 1 $argv
               spawn telnet 192.168.1.1 6082
               expect "Type 'quit' to close CLI session."
               send "ban.url $1n"
               expect "200 0"
               send "quitn"



Saturday, 14 July, 12
by Robbin Zhao (http://www.drupal001.com)




                        Thank You !
                                    Robbin Zhao (赵高欣)
                             http://www.drupal001.com




Saturday, 14 July, 12

More Related Content

What's hot

高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践Frank Cai
 
高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践rewinx
 
ByPat博客出品-高性能Web服务器nginx及相关新技术的应用
ByPat博客出品-高性能Web服务器nginx及相关新技术的应用ByPat博客出品-高性能Web服务器nginx及相关新技术的应用
ByPat博客出品-高性能Web服务器nginx及相关新技术的应用redhat9
 
系统性能分析和优化.ppt
系统性能分析和优化.ppt系统性能分析和优化.ppt
系统性能分析和优化.pptFrank Cai
 
TomCat迁移步骤简述以及案例
TomCat迁移步骤简述以及案例TomCat迁移步骤简述以及案例
TomCat迁移步骤简述以及案例maclean liu
 
Java内存管理问题案例分享
Java内存管理问题案例分享Java内存管理问题案例分享
Java内存管理问题案例分享bluedavy lin
 
Make your web faster
Make your web fasterMake your web faster
Make your web faster德生 谭
 
Node js实践
Node js实践Node js实践
Node js实践jay li
 
使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡cachowu
 
Traffic server overview
Traffic server overviewTraffic server overview
Traffic server overviewqianshi
 
Database.Cache&Buffer&Lock
Database.Cache&Buffer&LockDatabase.Cache&Buffer&Lock
Database.Cache&Buffer&LockLixun Peng
 
PC服务器阵列卡管理简易手册 叶金荣@CYOU-20121223
PC服务器阵列卡管理简易手册 叶金荣@CYOU-20121223PC服务器阵列卡管理简易手册 叶金荣@CYOU-20121223
PC服务器阵列卡管理简易手册 叶金荣@CYOU-20121223Jinrong Ye
 
Node.js长连接开发实践
Node.js长连接开发实践Node.js长连接开发实践
Node.js长连接开发实践longhao
 
第十二章解答
第十二章解答第十二章解答
第十二章解答jiannrong
 
Mysql企业备份发展及实践
Mysql企业备份发展及实践Mysql企业备份发展及实践
Mysql企业备份发展及实践maclean liu
 
MySQL压力测试经验
MySQL压力测试经验MySQL压力测试经验
MySQL压力测试经验Jinrong Ye
 
高性能LAMP程序设计
高性能LAMP程序设计高性能LAMP程序设计
高性能LAMP程序设计fuchaoqun
 
Lamp高性能设计
Lamp高性能设计Lamp高性能设计
Lamp高性能设计锐 张
 

What's hot (19)

运维自动化
运维自动化运维自动化
运维自动化
 
高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践
 
高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践
 
ByPat博客出品-高性能Web服务器nginx及相关新技术的应用
ByPat博客出品-高性能Web服务器nginx及相关新技术的应用ByPat博客出品-高性能Web服务器nginx及相关新技术的应用
ByPat博客出品-高性能Web服务器nginx及相关新技术的应用
 
系统性能分析和优化.ppt
系统性能分析和优化.ppt系统性能分析和优化.ppt
系统性能分析和优化.ppt
 
TomCat迁移步骤简述以及案例
TomCat迁移步骤简述以及案例TomCat迁移步骤简述以及案例
TomCat迁移步骤简述以及案例
 
Java内存管理问题案例分享
Java内存管理问题案例分享Java内存管理问题案例分享
Java内存管理问题案例分享
 
Make your web faster
Make your web fasterMake your web faster
Make your web faster
 
Node js实践
Node js实践Node js实践
Node js实践
 
使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡
 
Traffic server overview
Traffic server overviewTraffic server overview
Traffic server overview
 
Database.Cache&Buffer&Lock
Database.Cache&Buffer&LockDatabase.Cache&Buffer&Lock
Database.Cache&Buffer&Lock
 
PC服务器阵列卡管理简易手册 叶金荣@CYOU-20121223
PC服务器阵列卡管理简易手册 叶金荣@CYOU-20121223PC服务器阵列卡管理简易手册 叶金荣@CYOU-20121223
PC服务器阵列卡管理简易手册 叶金荣@CYOU-20121223
 
Node.js长连接开发实践
Node.js长连接开发实践Node.js长连接开发实践
Node.js长连接开发实践
 
第十二章解答
第十二章解答第十二章解答
第十二章解答
 
Mysql企业备份发展及实践
Mysql企业备份发展及实践Mysql企业备份发展及实践
Mysql企业备份发展及实践
 
MySQL压力测试经验
MySQL压力测试经验MySQL压力测试经验
MySQL压力测试经验
 
高性能LAMP程序设计
高性能LAMP程序设计高性能LAMP程序设计
高性能LAMP程序设计
 
Lamp高性能设计
Lamp高性能设计Lamp高性能设计
Lamp高性能设计
 

Similar to Php及drupal性能优化系列(二)

台北市研習_LAMP_20140815
台北市研習_LAMP_20140815台北市研習_LAMP_20140815
台北市研習_LAMP_20140815fweng322
 
如何使用 Xhprof 分析網站效能 (真實案例)
如何使用 Xhprof 分析網站效能 (真實案例)如何使用 Xhprof 分析網站效能 (真實案例)
如何使用 Xhprof 分析網站效能 (真實案例)Cyril Wang
 
构建基于Lamp的中型网站架构
构建基于Lamp的中型网站架构构建基于Lamp的中型网站架构
构建基于Lamp的中型网站架构HonestQiao
 
如何使用 Xhprof 分析網站效能 (真實案例2)
如何使用 Xhprof 分析網站效能 (真實案例2)如何使用 Xhprof 分析網站效能 (真實案例2)
如何使用 Xhprof 分析網站效能 (真實案例2)Cyril Wang
 
Hadoop Deployment Model @ OSDC.TW
Hadoop Deployment Model @ OSDC.TWHadoop Deployment Model @ OSDC.TW
Hadoop Deployment Model @ OSDC.TWJazz Yao-Tsung Wang
 
高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践self study
 
用JAX-RS和Jersey完成RESTful Web Services
用JAX-RS和Jersey完成RESTful Web Services用JAX-RS和Jersey完成RESTful Web Services
用JAX-RS和Jersey完成RESTful Web Servicesjavatwo2011
 
2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swt2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swttka
 
互联网创业服务器运维工具集
互联网创业服务器运维工具集互联网创业服务器运维工具集
互联网创业服务器运维工具集zhen chen
 
高性能Web服务器nginx及相关新技术的应用
高性能Web服务器nginx及相关新技术的应用高性能Web服务器nginx及相关新技术的应用
高性能Web服务器nginx及相关新技术的应用redhat9
 
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型Jackson Tian
 
Hadoop开发者入门专刊
Hadoop开发者入门专刊Hadoop开发者入门专刊
Hadoop开发者入门专刊liangxiao0315
 
Hbase运维碎碎念
Hbase运维碎碎念Hbase运维碎碎念
Hbase运维碎碎念haiyuan ning
 
D2_Node在淘宝的应用实践
D2_Node在淘宝的应用实践D2_Node在淘宝的应用实践
D2_Node在淘宝的应用实践Jackson Tian
 
Hadoop基线选定
Hadoop基线选定Hadoop基线选定
Hadoop基线选定baggioss
 
Ruby on Rails 開發環境建置 for Ubuntu
Ruby on Rails 開發環境建置 for UbuntuRuby on Rails 開發環境建置 for Ubuntu
Ruby on Rails 開發環境建置 for UbuntuMarsZ Chen
 
Node js实践
Node js实践Node js实践
Node js实践myzykj
 
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型裕波 周
 
钟志 第八期Web标准化交流会
钟志 第八期Web标准化交流会钟志 第八期Web标准化交流会
钟志 第八期Web标准化交流会Zhi Zhong
 

Similar to Php及drupal性能优化系列(二) (20)

台北市研習_LAMP_20140815
台北市研習_LAMP_20140815台北市研習_LAMP_20140815
台北市研習_LAMP_20140815
 
Paveo Tweak WordPress
Paveo Tweak WordPressPaveo Tweak WordPress
Paveo Tweak WordPress
 
如何使用 Xhprof 分析網站效能 (真實案例)
如何使用 Xhprof 分析網站效能 (真實案例)如何使用 Xhprof 分析網站效能 (真實案例)
如何使用 Xhprof 分析網站效能 (真實案例)
 
构建基于Lamp的中型网站架构
构建基于Lamp的中型网站架构构建基于Lamp的中型网站架构
构建基于Lamp的中型网站架构
 
如何使用 Xhprof 分析網站效能 (真實案例2)
如何使用 Xhprof 分析網站效能 (真實案例2)如何使用 Xhprof 分析網站效能 (真實案例2)
如何使用 Xhprof 分析網站效能 (真實案例2)
 
Hadoop Deployment Model @ OSDC.TW
Hadoop Deployment Model @ OSDC.TWHadoop Deployment Model @ OSDC.TW
Hadoop Deployment Model @ OSDC.TW
 
高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践
 
用JAX-RS和Jersey完成RESTful Web Services
用JAX-RS和Jersey完成RESTful Web Services用JAX-RS和Jersey完成RESTful Web Services
用JAX-RS和Jersey完成RESTful Web Services
 
2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swt2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swt
 
互联网创业服务器运维工具集
互联网创业服务器运维工具集互联网创业服务器运维工具集
互联网创业服务器运维工具集
 
高性能Web服务器nginx及相关新技术的应用
高性能Web服务器nginx及相关新技术的应用高性能Web服务器nginx及相关新技术的应用
高性能Web服务器nginx及相关新技术的应用
 
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
 
Hadoop开发者入门专刊
Hadoop开发者入门专刊Hadoop开发者入门专刊
Hadoop开发者入门专刊
 
Hbase运维碎碎念
Hbase运维碎碎念Hbase运维碎碎念
Hbase运维碎碎念
 
D2_Node在淘宝的应用实践
D2_Node在淘宝的应用实践D2_Node在淘宝的应用实践
D2_Node在淘宝的应用实践
 
Hadoop基线选定
Hadoop基线选定Hadoop基线选定
Hadoop基线选定
 
Ruby on Rails 開發環境建置 for Ubuntu
Ruby on Rails 開發環境建置 for UbuntuRuby on Rails 開發環境建置 for Ubuntu
Ruby on Rails 開發環境建置 for Ubuntu
 
Node js实践
Node js实践Node js实践
Node js实践
 
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
 
钟志 第八期Web标准化交流会
钟志 第八期Web标准化交流会钟志 第八期Web标准化交流会
钟志 第八期Web标准化交流会
 

Php及drupal性能优化系列(二)

  • 1. by Robbin Zhao (http://www.drupal001.com) PHP和Drupal性能优化系列(二) 赵高欣 (Robbin Zhao) zhaogaoxin@gmail.com http://www.drupal001.com Saturday, 14 July, 12
  • 2. by Robbin Zhao (http://www.drupal001.com) 目录 从网站的用户体验说起 让PHP异步执行 Drupal最佳网站架构模式 Boost的缓存管理和性能问题 Varnish的缓存管理 Saturday, 14 July, 12
  • 3. by Robbin Zhao (http://www.drupal001.com) 浏览器处理网页请求分析 URL请求的几个阶段: DNS查询 建立TCP连接 发送HTTP请求 (GET只发送头部) 等待服务器相应 开始接收服务器输出 接收完成 减少上面任⼀一环节的时间,就能提高网页响应时间! Saturday, 14 July, 12
  • 4. by Robbin Zhao (http://www.drupal001.com) 浏览器处理网页请求分析 我们可以优化的: DNS查询 (预解析) 等待服务器相应 (代码的执行时间) 开始接收服务器输出 (减少传输、压缩) 接收完成 FireBug: Saturday, 14 July, 12
  • 5. by Robbin Zhao (http://www.drupal001.com) 让PHP异步执行 浏览器 PHP进程 PHP异步执 输 行可以最快的响 浏览器 出 应用户操作。 PHP进程继续 (和输出无关) Saturday, 14 July, 12
  • 6. by Robbin Zhao (http://www.drupal001.com) PHP异步执行演示 PHP异步执行的使用 1. 开启后台进程 (Linux/Windows后台命令: popen) 2. PHP基于HTTP协议的异步代码 (ignore_user_abort) Saturday, 14 July, 12
  • 7. by Robbin Zhao (http://www.drupal001.com) Drupal最佳网站架构 1. 使用Varnish并做双机热备 2. Varnish之前可以再有LB 3. 对静态内容使用独立域名 4. 用Nginx提供静态内容 5. 动态页面Nginx代理到Apache 5. Apache比FastCGI稳定 6. Memcache是必须的 7. GlusterFS可以做NFS Saturday, 14 July, 12
  • 8. by Robbin Zhao (http://www.drupal001.com) Boost的缓存管理 1. Boost为每⼀一个URL生产⼀一个缓存页面。 包括URL中不同的query,也会生产⼀一份静态缓存,我们需要忽略 ⼀一些对输出没有影响的参数。在boost_init里面添加如下3列: 2. Boost只缓存匿名用户访问? 有些页面,登录用户和匿名用户展示同样的结果。(给所有用户缓存⼀一份) 有些页面,所有的登录用户看到的结果都⼀一样。(给所有登录用户缓存⼀一份) 强制缓存,修改全局变量:$GLOBALS['_boost_should_cached'] = TRUE 如果要使用缓存,还得修改.htaccess文件。 Saturday, 14 July, 12
  • 9. by Robbin Zhao (http://www.drupal001.com) Boost的缓存管理 3. 缓存文件存在,如何让Boost强制覆盖已有文件,生成最新的缓存 在自定义模块里添加如下代码: 4. 如何修改Boost缓存文件的文件名或者目录 默认情况下,Boost跟URL生成对应的缓存文件,如果要修改文件名,在自定义代 码的任何位置,修改全局变量$GLOBALS['_boost_path']即可。如下示例: hook_preprocess_page(&$vars) { if (vars['node']->type == ‘typeA’) { $GLOBALS['_boost_path'] = ‘typeA/’ . $GLOBALS['_boost_path']; } } 注:要使用修改后的boost缓存,必须修改相应的Apache URL Rewrite的设置。 Saturday, 14 July, 12
  • 10. by Robbin Zhao (http://www.drupal001.com) Boost的缓存管理 5. 如果Drupal开启JS/CSS压缩,重建缓存时JS/CSS文件名会变。 这时,Boost生成的静态页面缓存会失效,因为JS/CSS引用找不到了。 对于⼀一个大型网站,重新生成所有的静态页面缓存是灾难性的。 修改drupal_get_css和drupal_get_js,如下所示,删掉querystring 6. 如果JS/CSS聚合文件存在,如何让Drupal强制重新生成最新文件 A方案:把生成的js/css和文件名记录到数据库,hook_menu(js|css) B方案:通过ignore_boost_query忽略某⼀一参数,如:flush 然后删除js/css文件来强制重新生成。如drupal_build_css_cache/ drupal_build_js_cache函数中,添加如下: Saturday, 14 July, 12
  • 11. by Robbin Zhao (http://www.drupal001.com) Boost的性能问题 boost_nodeapi的性能问题 由于node的更新、添加等操作都会触发boost的缓存检查操作,这是⼀一个 缓慢的操作!!! node_save的性能问题 node_save会清除缓存,因为清除缓存是⼀一个很耗时的操作,我们参考⼀一下源 码: 因此,在无需清除缓存时使用:$conf[‘node_save_clear_cache’] = FALSE; 同理,我们修改⼀一下boost_nodeapi函数 Saturday, 14 July, 12
  • 12. by Robbin Zhao (http://www.drupal001.com) Apache配置小提示 A. Boost的修改会经常需要修改Apache的配置文件,因此 在Apache中如何调试URL Rewrite? 在配置文件中加入断点,然后用firebug或http工具请求URL,打印你想要的变 量。(可以参考http://www.drupal001.com/上详细介绍) RewriteRule (.*) http://www.baidu.com/?host=%{HTTP_HOST},rurl=%{REQUEST_URI} [R=301,L,QSA] B. 提高Apache的性能,AllowOverride需要None 为了使用.htaccess,更好的办法是include在主配置文件中,如下: <Directory /var/www/html/www.zinch.cn/html/> AllowOverride None Include /path/to/your.htaccess </Directory> Saturday, 14 July, 12
  • 13. by Robbin Zhao (http://www.drupal001.com) 缓存!Varnish可以做得更多 a. 为相同的结果设置相同的hash b. 让Drupal输出的HTML结果,也缓存到Varnish。修改vcl_fetch if (req.url ~ "path/" ) { unset beresp.http.Cache-Control; unset beresp.http.Pragma; unset beresp.http.Expires; set beresp.ttl = 10m; set beresp.do_gzip = true; set beresp.http.Cache-Control = "max-age=600"; } c. Varnish缓存管理 varnishadm命令行 ban.url (3.x) telnet Expect set 1 $argv spawn telnet 192.168.1.1 6082 expect "Type 'quit' to close CLI session." send "ban.url $1n" expect "200 0" send "quitn" Saturday, 14 July, 12
  • 14. by Robbin Zhao (http://www.drupal001.com) Thank You ! Robbin Zhao (赵高欣) http://www.drupal001.com Saturday, 14 July, 12