手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表2024年09月的文章

几个名词,搏君一笑

强烈谴责
深表遗憾
强烈抗议
保证冷静
不明真相
一小撮
热血分子
围观群众
深入…深入…大力加强
增长…促进…扩大力度
保持…持续

Yii的AR效率释疑

关于yii的AR效率,其实一直以来都有很多的想法,试想,如果不做metadata的缓存,每次查询前,都必须先做一下metadata的查询,效率也不会太高到哪里吧?
所以,看到官方有人在问就关注了一下:http://www.yiiframework.com/forum/index.php/topic/16597-yii%E7%9A%84ar%E7%9C%9F%E7%9A%84%E8%83%BD%E7%94%A8%E4%B9%88%EF%BC%9F/

有人提问:

XML/HTML代码
  1. 我在首页会很多个ar的请求。热门文章、最新文章、编辑推荐、最新评论的文章。。。。  
  2.   
  3. 我把这些通过 model()->findAll()的结果放在一个数组里。  
  4.   
  5. 然后把这个数组var_dump了一下,这些数据高达1.06M。这是不是太耗内存了?  
  6.   
  7. 页面上全是密密麻麻的数据表结构,如果关联关系复杂点的,会更多。  
  8.   
  9. 我光var_dump(yii::app()->db) 就有5000多行的数据。  
  10.   
  11.   
  12. 这样的db操作这么耗内存,敢用么?谁能消除我这个担心?多谢  
  13.   
  14. AcitveRecord ,只能玩一玩开拓眼界. 真要生产环境用, 就不行!   

然后,Qiang就回复了:

XML/HTML代码
  1. 你的结论有点想当然了。建议你仔细做profiling来验证。事实上,AR已经被成功应用在若干大流量的网站上了。  
  2.   
  3. 你不能用var_dump()来估计AR的内存开销。var_dump会把所有被reference到的对象都dump出来,包括application,以及所有的application component,因为它们都被AR间接reference到了。  
  4.   
  5. AR额外的内存开销是存储10个左右变量的开销。如果按20字节来估算,额外的开销是200字节,这样在1000个AR对象情况下,额外的内存开销为200KB。这个对几乎所有的web应用而言应该不是问题。  
  6.   
  7. 如果你需要装载更多的数据,建议你使用DAO。  
  8.   
  9. 另外,对于任何大流量的web应用而言,cache都是必须的。cache可以帮助解决绝大多数的性能瓶颈。   

cache在DB中有一些处理的,比如那个duration,在db中查询就可以做一下缓存了。然后metadata再做一下缓存,不也挺好?

Tags: yii

insertBefore

有时候发现insertBefore还是很有用的。
在指定的内容前插入指定的元素,果然还是很不错:

XML/HTML代码
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. <html xmlns="http://www.w3.org/1999/xhtml">  
  3. <head>  
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  5. <title>无标题文档</title>  
  6. </head>  
  7. <body>  
  8. <div id="test">  
  9. <div class="x1">Node1</div>  
  10. <div class="x1">Node2</div>  
  11. <div class="x1">Node3</div>  
  12. </div>  
  13. <script type="text/javascript">  
  14. var oTest = document.getElementById("test");  
  15. //var x2document.getElementsByTagName("div");  
  16. var x2 = document.getElementsByClassName("x1");  
  17. var newNode = document.createElement("div");  
  18. newNode.innerHTML = "This is a test";  
  19. oTest.insertBefore(newNode,x2[0]);  
  20. oTest.removeChild(x2[0]);  
  21. </script>  
  22. </body>  
  23. </html>  

这段代码的主要来源是http://bbs.blueidea.com/thread-2877763-1-1.html,果然是可以做参考的。比如放在哪个节点前,删除哪个节点。
如果将节点都存储到localStorage中,就能够随时替换节点了。
做个纪录

Tags: insertbefore

记录Xcode4.3无法安装的问题

Xcode4.3出来一阵了,但由于好象上次install Xcode这个快键方式被我删除了,然后现在在app store里就无法看到xcode更新了。
于是找了xcode的app过来安装,但是安装的时候提示一Mobile什么的pkg无法安装。一直很纠结。
直到昨天,CTO电话我,告诉 我一个技巧就安装成功了。
右键xcode.app,选择查看包内容,然后进入/Xcode.app/Contents/Resources/Packages,直接安装:MobileDevice.pkg,安装好之后,再运行xcode.app就正常安装成功了。

以后还是需要细心一点。果然对这些不熟,动手能力不强啊

Tags: xcode

网站PR继续下降

不知道为什么,网站自从移到东京节点后,PR值一降再降。
或许,这也是一种激励,准备乘这个机会,将网站改版一次。
原来的内容也有点杂,我是不是该好好处理一下?去芜存精?不清楚,反正心是乱了。