Google PR 5!
Google pr 5 ,alexa 45,7781
访问量又没有增加,估计是他的算法改了。
浏览器加载和渲染原理分析
http://hi.baidu.com/seosky/blog/item/78d3394c130f86ffd72afc56.html
1. IE下载的顺序是从上到下,渲染的顺序也是从上到下,下载和渲染是同时进行的。
2. 在渲染到页面的某一部分时,其上面的所有部分都已经下载完成(并不是说所有相关联的元素都已经下载完)。
3. 如果遇到语义解释性的标签嵌入文件(JS脚本,CSS样式),那么此时IE的下载过程会启用单独连接进行下载。
4. 并且在下载后进行解析,解析过程中,停止页面所有往下元素的下载。
5. 样式表在下载完成后,将和以前下载的所有样式表一起进行解析,解析完成后,将对此前所有元素(含以前已经渲染的)重新进行渲染。
6. JS、CSS中如有重定义,后定义函数将覆盖前定义函数。
valgrind!一代神器
安装Phurple,调试……怎么都出不来,
看Phurple作者的回帖,建议使用valgrind。
valgrind php test.php
太牛了,就是web界的firebug!
任何程序的相关调用,堆栈都出来了……
php报告是由于禁用了dl(),
修改了php.ini;
程序跑起来了……
然后偷窥到调用libpurple全过程,
太爽了!
dbcached批量获取键值(get keys)问题
dbcached(http://code.google.com/p/dbcached/) 是一种memcached缓存持久化解决方案。
add()之后,会通过udp包发给nmdp存储
如果get()未命中,则向nmdp取回数据,写入memcached
问题描述
Memcache::get支持单个键和批量键获取:
string Memcache::get ( string key )
array Memcache::get ( array keys )
当使用 Memcache::get ( array keys ) 时,如果key未命中:
dbcached向nmdp取回数据后,所有键值均为keys中最后一个键值。
例:
var_dump($memcache->get(array(’20020410070133′,’20040410070111′)));
首次请求,键值值全部为最后一个键(20040410070111)的键值:
array
'20020410070133' => string ‘郭蓉’ (length=6) ‘20040410070111′ => string ‘郭蓉’ (length=6)
刷新之后,由于数据已经读入memcached,输出正常:
array'20020410070133' => string ‘张伟’ (length=6) ‘20040410070111′ => string ‘郭蓉’ (length=6)
解决方案(临时)
get两次 :!
$memcache->get($keys);
return $memcache->get($keys);
不测不知道,一测吓一跳!
因为uchome不支持实名注册,我写了一个缓冲处理ob_call_back,将用户名(学号)替换为姓名:
程序流程:
- 初始生成一个php数组文件,array(’学号’=>’姓名’)
- ob_call_back中,使用preg_replace_call替换
程序源码:
- $file = 'data/sn_array.php';
- if($_REQUEST['action'] = 'sn_array'){
- sn_array($file);
- }
- $GLOBALS['sn'] = (array)require($file);
- function name($matches){
- $sn = $matches[1];
- if(isset($GLOBALS['sn'][$sn])){
- return '>' . $GLOBALS['sn'][$sn];
- }
- return '>' . $sn;
- }
- function sn($buffer){
- return preg_replace_callback('/>(200\d{11})/', 'name', $buffer);
- }
- function sn_array($file){
- require_once '../config.php';
- $sql = "SELECT StudentID, Name FROM edu_studentinfo WHERE Name IS NOT NULL
- UNION SELECT sn, name FROM usr WHERE name IS NOT NULL";
- $sn = $GLOBALS['db']->GetAssoc($sql);
- file_put_contents($file, '<?php return ' . var_export($sn, true) . '?>');
- }
一直觉得很慢……
昨天用xdebug+webgrind一测,妖怪显形了!
profile显示每次都调用了adodb访问用户数据库,而不是我预想中的只在初始化用户数组时。
答案就在这:
- if($_REQUEST['action'] = 'sn_array'){
- sn_array($file);
- }
== 写成了 =,导致每次请求都执行sn_array(),扫描用户全表,生成用户数组!
wap.qihoo.com,新人报道:奇虎第一个项目
- 预期两周完成
实际:2008-09-08 -> 2008-10-17 - 项目重/难点
- 页内分页:单页显示500个字符,图片算100个字符;相当于做了个xml解析
- 图片代理:将原始图片缩略图处理之后再传输给用户
- ubb解析:搜索引擎接口的平文本,ubb转换html;正则表达式列表
- tinyurl:通过压缩链接,将4k压缩到了2k以内
- 高速读写是个问题,用了memcachedb
- key键生成,用了62进制,将16位的hex压缩到10-11位;另还测试出手机支持的80个字符,能压缩到9位
- 手机兼容性:
- 通过w3c校验:先标准,再兼容!
- wap/xhtml自动切换:is_wap判断函数,四重过滤;Nokia的网络浏览器不支持wml
- meta设置文档类型,content-type必须全为小写,否则不兼容老手机
- cmwap接点上网,HTTP_USER_AGENT为空
- 经验
- Zend Framework
- 测试驱动,测试保障开发
- 真机(真实用户环境)测试
xdebug+webgrind
xdebug
http://xdebug.org/
下载地址:
Source:
Windows modules:
windows
- 编辑php.ini,先注释掉zend:
[Zend]
;zend_extension_ts = “D:\Xampp\php\zendOptimizer\lib\ZendExtensionManager.dll” - 启用x-debug
[xdebug]
zend_extension_ts = “D:\Xampp\php\ext\php_xdebug-2.0.0-5.2.2.dll”;必须为完整路径
xdebug.profiler_enable_trigger = 1
xdebug.profiler_output_dir=”D:\Xampp\tmp\xdebug”
linux
- 安装xdebug扩展
sudo pecl install xdebug - 编辑php.ini,启用x-debug
[xdebug]
zend_extension_ts = “/usr/lib/php5/xdebug.so” ;必须为完整路径
xdebug.profiler_enable_trigger = 1
xdebug.profiler_output_dir=”/tmp”
webgrind
(http://code.google.com/p/webgrind/ )
下载地址:http://webgrind.googlecode.com/files/webgrind-release-0.81.zip
- 下载webgrind,解压缩到web目录
- 首先访问需要优化的php程序,get/post请求中加入XDEBUG_PROFILE
例如info.php,http://localhost/info.php?XDEBUG_PROFILE - 然后访问:http://localhost/webgrind/
默认auto,即为刚刚请求的文件profile,[update]!
程序不兼容IE(本机测试winxp+ie6),如果点了update之后毫无反应,请使用firefox。
类Memcached缓存系统
- cache:
memcached - Persistent Storage solution:
dbcached = memcached + nmdb
nmdb = nmdb(memcached) => QDBM/berkeley db
memcachedb = memcached(protocol) => berkeley db
TokyoTyrant = memcached(protocol) => TokyoCabinet - dbm:
TokyoCabinet(successor of QDBM)
QDBM
berkeley db
来奇虎一个月
周鸿祎比想象中的胖,
肚子还有点大,
齐向东比照片上的老,
人却比照片更和蔼,
第一美女应该是代琳,
媒体的照片把她拍老了几岁……可恨!

