emu in blogjava

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  171 随笔 :: 103 文章 :: 1052 评论 :: 2 Trackbacks

项目的PV长期徘徊在每天1亿多个PV,虽然同时在线数一直在冲新高,PV始终冲不上去。doudou用其它方式做PV统计也证实了emu的方式是存在问题的,但是到底是什么问题呢?我们来看一下发起PV统计的代码是怎么写的:

new  Image().src = " 统计PV的CGI " ;

就一行代码,还能有错吗?能有什么错呢?难道请求的结果被IE给cache了?反复检查了http header,尝试了加随机数来禁止cache,都没有用

用sniffer反复试验后证实,上面的方式确实有的时候发不出去http请求。再看了一眼代码:

new  Image().src = " 统计PV的CGI " ;

突然灵光一现,找到原因了!

如果在创建Image对象的时候,浏览器的不忙,垃圾回收器正好被唤醒来收垃圾了,GC会发现这个Image根本就没有句柄来引用,属于可以回收的垃圾,因此会在请求发起之前就把这个对象给回收掉了。本来创建这个对象的时候刻意不保存引用句柄来方便GC回收它,可是没想到GC有可能回收的这么快,那就保存一个句柄吧:

var  tmpImage  =   new  Image();
tmpImage.src
= " 统计PV的CGI " ;

修改发布之后,一天内PV剧增了8000万。

有的时候我们也用Image对象来做其它功能的,比如跨域发送http请求,比如测试网速等等,都需要小心这个问题。

posted on 2006-06-28 10:51 emu 阅读(3033) 评论(9)  编辑  收藏

评论

# re: fix一个bug,一天增加近亿个PageView 2006-06-28 14:43 江南白衣
这么开心的事情,是不是见者有份,回复的都管一顿饭啊.  回复  更多评论
  

# re: fix一个bug,一天增加近亿个PageView 2006-06-28 17:17 原创专栏 开源学习
不知道能不能蹭来饭,但顶是顶了。  回复  更多评论
  

# re: fix一个bug,一天增加近亿个PageView 2006-06-28 22:07 emu
呵呵要是回复都管一顿,emu的积分排行恐怕很快就可以超过白衣了。不过要是白衣大哥真的赏脸,多管几顿又有何妨?  回复  更多评论
  

# re: fix一个bug,一天增加近亿个PageView 2006-06-30 20:10 google
最后得出结论:这里确实值得经常来!  回复  更多评论
  

# re: fix一个bug,一天增加近亿个PageView 2006-07-07 14:00 eamoi_nologin
从上面的留言看,好像是真的有管饭。
赶紧回复一下。emu,记得噢。  回复  更多评论
  

# re: fix一个bug,一天增加近亿个PageView 2006-09-30 10:11 陈朋奕..
果然是技术达人……
PV多了8000万,你们老板会管一顿饭吧,到时叫上我咯  回复  更多评论
  

# re: fix一个bug,一天增加近亿个PageView 2006-11-01 16:03 XS
还好我向来不直接 new Image().src ,习惯先定义obj,再obj.src  回复  更多评论
  

# re: fix一个bug,一天增加近亿个PageView 2009-05-15 16:39 魔兽世界私服
细心的高手,学心了....  回复  更多评论
  

# re: fix一个bug,一天增加近亿个PageView 2009-05-15 16:41 藏獒
你是高级工程师啊,NB...  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: