Submit Search
Upload
Php及drupal性能优化系列(二)
•
2 likes
•
872 views
Robbin Zhao
Follow
Drupal性能优化,php性能优化、服务器性能优化,Varnish缓存。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 14
Download now
Download to read offline
Recommended
百姓网如何优化网速-Qcon2011
百姓网如何优化网速-Qcon2011
Yiwei Ma
高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕
ideawu
20111018 zhouchen share
20111018 zhouchen share
zcbug
Lamp优化实践
Lamp优化实践
zhliji2
Apache trafficserver
Apache trafficserver
Din Dindin
HBase@taobao for 技术沙龙
HBase@taobao for 技术沙龙
bluedavy lin
Nosql七种武器之长生剑 mongodb的使用介绍
Nosql七种武器之长生剑 mongodb的使用介绍
yczealot
线上问题排查交流
线上问题排查交流
Edward Lee
Recommended
百姓网如何优化网速-Qcon2011
百姓网如何优化网速-Qcon2011
Yiwei Ma
高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕
ideawu
20111018 zhouchen share
20111018 zhouchen share
zcbug
Lamp优化实践
Lamp优化实践
zhliji2
Apache trafficserver
Apache trafficserver
Din Dindin
HBase@taobao for 技术沙龙
HBase@taobao for 技术沙龙
bluedavy lin
Nosql七种武器之长生剑 mongodb的使用介绍
Nosql七种武器之长生剑 mongodb的使用介绍
yczealot
线上问题排查交流
线上问题排查交流
Edward Lee
运维自动化
运维自动化
OpenCity Community
高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践
Frank Cai
高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践
rewinx
ByPat博客出品-高性能Web服务器nginx及相关新技术的应用
ByPat博客出品-高性能Web服务器nginx及相关新技术的应用
redhat9
系统性能分析和优化.ppt
系统性能分析和优化.ppt
Frank Cai
TomCat迁移步骤简述以及案例
TomCat迁移步骤简述以及案例
maclean liu
Java内存管理问题案例分享
Java内存管理问题案例分享
bluedavy lin
Make your web faster
Make your web faster
德生 谭
Node js实践
Node js实践
jay li
使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡
cachowu
Traffic server overview
Traffic server overview
qianshi
Database.Cache&Buffer&Lock
Database.Cache&Buffer&Lock
Lixun Peng
PC服务器阵列卡管理简易手册 叶金荣@CYOU-20121223
PC服务器阵列卡管理简易手册 叶金荣@CYOU-20121223
Jinrong Ye
Node.js长连接开发实践
Node.js长连接开发实践
longhao
第十二章解答
第十二章解答
jiannrong
Mysql企业备份发展及实践
Mysql企业备份发展及实践
maclean liu
MySQL压力测试经验
MySQL压力测试经验
Jinrong Ye
高性能LAMP程序设计
高性能LAMP程序设计
fuchaoqun
Lamp高性能设计
Lamp高性能设计
锐 张
台北市研習_LAMP_20140815
台北市研習_LAMP_20140815
fweng322
Paveo Tweak WordPress
Paveo Tweak WordPress
Yuancheng Yang
如何使用 Xhprof 分析網站效能 (真實案例)
如何使用 Xhprof 分析網站效能 (真實案例)
Cyril Wang
More Related Content
What's hot
运维自动化
运维自动化
OpenCity Community
高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践
Frank Cai
高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践
rewinx
ByPat博客出品-高性能Web服务器nginx及相关新技术的应用
ByPat博客出品-高性能Web服务器nginx及相关新技术的应用
redhat9
系统性能分析和优化.ppt
系统性能分析和优化.ppt
Frank Cai
TomCat迁移步骤简述以及案例
TomCat迁移步骤简述以及案例
maclean liu
Java内存管理问题案例分享
Java内存管理问题案例分享
bluedavy lin
Make your web faster
Make your web faster
德生 谭
Node js实践
Node js实践
jay li
使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡
cachowu
Traffic server overview
Traffic server overview
qianshi
Database.Cache&Buffer&Lock
Database.Cache&Buffer&Lock
Lixun Peng
PC服务器阵列卡管理简易手册 叶金荣@CYOU-20121223
PC服务器阵列卡管理简易手册 叶金荣@CYOU-20121223
Jinrong Ye
Node.js长连接开发实践
Node.js长连接开发实践
longhao
第十二章解答
第十二章解答
jiannrong
Mysql企业备份发展及实践
Mysql企业备份发展及实践
maclean liu
MySQL压力测试经验
MySQL压力测试经验
Jinrong Ye
高性能LAMP程序设计
高性能LAMP程序设计
fuchaoqun
Lamp高性能设计
Lamp高性能设计
锐 张
What's hot
(19)
运维自动化
运维自动化
高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践
ByPat博客出品-高性能Web服务器nginx及相关新技术的应用
ByPat博客出品-高性能Web服务器nginx及相关新技术的应用
系统性能分析和优化.ppt
系统性能分析和优化.ppt
TomCat迁移步骤简述以及案例
TomCat迁移步骤简述以及案例
Java内存管理问题案例分享
Java内存管理问题案例分享
Make your web faster
Make your web faster
Node js实践
Node js实践
使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡
Traffic server overview
Traffic server overview
Database.Cache&Buffer&Lock
Database.Cache&Buffer&Lock
PC服务器阵列卡管理简易手册 叶金荣@CYOU-20121223
PC服务器阵列卡管理简易手册 叶金荣@CYOU-20121223
Node.js长连接开发实践
Node.js长连接开发实践
第十二章解答
第十二章解答
Mysql企业备份发展及实践
Mysql企业备份发展及实践
MySQL压力测试经验
MySQL压力测试经验
高性能LAMP程序设计
高性能LAMP程序设计
Lamp高性能设计
Lamp高性能设计
Similar to Php及drupal性能优化系列(二)
台北市研習_LAMP_20140815
台北市研習_LAMP_20140815
fweng322
Paveo Tweak WordPress
Paveo Tweak WordPress
Yuancheng Yang
如何使用 Xhprof 分析網站效能 (真實案例)
如何使用 Xhprof 分析網站效能 (真實案例)
Cyril Wang
构建基于Lamp的中型网站架构
构建基于Lamp的中型网站架构
HonestQiao
如何使用 Xhprof 分析網站效能 (真實案例2)
如何使用 Xhprof 分析網站效能 (真實案例2)
Cyril Wang
Hadoop Deployment Model @ OSDC.TW
Hadoop Deployment Model @ OSDC.TW
Jazz Yao-Tsung Wang
高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践
self study
用JAX-RS和Jersey完成RESTful Web Services
用JAX-RS和Jersey完成RESTful Web Services
javatwo2011
2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swt
tka
互联网创业服务器运维工具集
互联网创业服务器运维工具集
zhen chen
高性能Web服务器nginx及相关新技术的应用
高性能Web服务器nginx及相关新技术的应用
redhat9
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
Jackson Tian
Hadoop开发者入门专刊
Hadoop开发者入门专刊
liangxiao0315
Hbase运维碎碎念
Hbase运维碎碎念
haiyuan ning
D2_Node在淘宝的应用实践
D2_Node在淘宝的应用实践
Jackson Tian
Hadoop基线选定
Hadoop基线选定
baggioss
Ruby on Rails 開發環境建置 for Ubuntu
Ruby on Rails 開發環境建置 for Ubuntu
MarsZ Chen
Node js实践
Node js实践
myzykj
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
裕波 周
钟志 第八期Web标准化交流会
钟志 第八期Web标准化交流会
Zhi Zhong
Similar to Php及drupal性能优化系列(二)
(20)
台北市研習_LAMP_20140815
台北市研習_LAMP_20140815
Paveo Tweak WordPress
Paveo Tweak WordPress
如何使用 Xhprof 分析網站效能 (真實案例)
如何使用 Xhprof 分析網站效能 (真實案例)
构建基于Lamp的中型网站架构
构建基于Lamp的中型网站架构
如何使用 Xhprof 分析網站效能 (真實案例2)
如何使用 Xhprof 分析網站效能 (真實案例2)
Hadoop Deployment Model @ OSDC.TW
Hadoop Deployment Model @ OSDC.TW
高性能Web服务器Nginx及相关新技术的应用实践
高性能Web服务器Nginx及相关新技术的应用实践
用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-swt
互联网创业服务器运维工具集
互联网创业服务器运维工具集
高性能Web服务器nginx及相关新技术的应用
高性能Web服务器nginx及相关新技术的应用
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
Hadoop开发者入门专刊
Hadoop开发者入门专刊
Hbase运维碎碎念
Hbase运维碎碎念
D2_Node在淘宝的应用实践
D2_Node在淘宝的应用实践
Hadoop基线选定
Hadoop基线选定
Ruby on Rails 開發環境建置 for Ubuntu
Ruby on Rails 開發環境建置 for Ubuntu
Node js实践
Node js实践
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
从无阻塞并行脚本加载(Lab.js)到浏览器消息模型
钟志 第八期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
Download now