View Mode: Normal | Article List
WEB性能提升规则 High Performance Web Sites
[ 2010-04-27 12:33:38 | Author: 振华 ]
High Performance Web Sites - yahoo14条
由谁提出的
来自Yahoo! Exceptional Performance team
什么时候开始发起的
2004年开始研究,2007年4月开始,陆续发布,(5月,7月,9月)
为什么
Yahoo希望对自己的产品性能做出一些测量和改善
成绩
总结出14条提升WEB产品性能的准则(后续21条)
第一条:最小化HTTP请求(Frontend)
将CSS文件和JS文件合并(可行性不高)
CSS Sprites
Image Maps(很久以前经常使用的“热区”)
Inline Images,data:URL(浏览器兼容问题)
每天大概有40-60%的访问者去到我们的站点的时候都是empty cache,所以,
我们如果能够使得他们在第一次访问时速度更快,那对他们来说将获得很好的体验。
第二条:使用内容分发网络 (Server)
将静态文件分发到其他独立的服务器上。
目的:使得用户可以就近获取到...
Read More...
由谁提出的
来自Yahoo! Exceptional Performance team
什么时候开始发起的
2004年开始研究,2007年4月开始,陆续发布,(5月,7月,9月)
为什么
Yahoo希望对自己的产品性能做出一些测量和改善
成绩
总结出14条提升WEB产品性能的准则(后续21条)
第一条:最小化HTTP请求(Frontend)
将CSS文件和JS文件合并(可行性不高)
CSS Sprites
Image Maps(很久以前经常使用的“热区”)
Inline Images,data:URL(浏览器兼容问题)
每天大概有40-60%的访问者去到我们的站点的时候都是empty cache,所以,
我们如果能够使得他们在第一次访问时速度更快,那对他们来说将获得很好的体验。
第二条:使用内容分发网络 (Server)
将静态文件分发到其他独立的服务器上。
目的:使得用户可以就近获取到...
Read More...
MVC模式:Model模型 View试图 Control控制器,是目前主流模式,被当作服务器软件入门基本模式学习和掌握,主流框架Struts 1/2 JSF Wicket基本都顺理成章支持MVC模式。
但是,随着时间推移,MVC模式也暴露出大量缺点,因为MVC模式本质上是一个结构型模式,结构模式相比行为模式而言,实际就是静止的,相对固定的,而随着B/S和互联网应用不断普及,Web 2.0和社会化媒体 以及游戏等大量频繁交互应用普及,相对静止的MVC模式已经不适合高度交互注重行为的应用了。
DDD领域建模本身比较重视结构,它的实体 值对象和服务器是也是一种结构划分,但是没有强调对象职责行为的重要性,而这是对象和数据库唯一的区别,当然其上下文场景概念的提出,也可以认为体现了对角色和场景的重视,但远远不够。
相反,对象设计:角色、责任和协作"(Object Design: Roles, Responsibilities, and Collaborations))一书提出职责驱动开发,将对象行为上升为重点,提出了对象其实是在扮演某种角色,而角色是有职责的,然后会在一定场景上下文环境中实施一定交互行为,这些已经在Jdon进行了充分讨论:
...
Read More...
但是,随着时间推移,MVC模式也暴露出大量缺点,因为MVC模式本质上是一个结构型模式,结构模式相比行为模式而言,实际就是静止的,相对固定的,而随着B/S和互联网应用不断普及,Web 2.0和社会化媒体 以及游戏等大量频繁交互应用普及,相对静止的MVC模式已经不适合高度交互注重行为的应用了。
DDD领域建模本身比较重视结构,它的实体 值对象和服务器是也是一种结构划分,但是没有强调对象职责行为的重要性,而这是对象和数据库唯一的区别,当然其上下文场景概念的提出,也可以认为体现了对角色和场景的重视,但远远不够。
相反,对象设计:角色、责任和协作"(Object Design: Roles, Responsibilities, and Collaborations))一书提出职责驱动开发,将对象行为上升为重点,提出了对象其实是在扮演某种角色,而角色是有职责的,然后会在一定场景上下文环境中实施一定交互行为,这些已经在Jdon进行了充分讨论:
...
Read More...
struts2 与 Spring MVC比较
[ 2010-04-17 21:26:51 | Author: 振华 ]
struts2框架是类级别的拦截,每次来了请求就创建一个Action,然后调用setter getter方法把request中的数据注入
struts2实际上是通过setter getter方法与request打交道的
struts2中,一个Action对象对应一个request上下文
spring3 mvc不同,spring3mvc是方法级别的拦截,拦截到方法后根据参数上的注解,把request数据注入进去
在spring3mvc中,一个方法对应一个request上下文
好了 我们来整理一下
struts2是类级别的拦截, 一个类对应一个request上下文,
springmvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应
所以说从架构本身上 spring3 mvc就容易实现restful url
而struts2的架构实现起来要费劲
因为struts2 action的一个方法可以对应一个url
而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了
===================================
...
Read More...
struts2实际上是通过setter getter方法与request打交道的
struts2中,一个Action对象对应一个request上下文
spring3 mvc不同,spring3mvc是方法级别的拦截,拦截到方法后根据参数上的注解,把request数据注入进去
在spring3mvc中,一个方法对应一个request上下文
好了 我们来整理一下
struts2是类级别的拦截, 一个类对应一个request上下文,
springmvc是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应
所以说从架构本身上 spring3 mvc就容易实现restful url
而struts2的架构实现起来要费劲
因为struts2 action的一个方法可以对应一个url
而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了
===================================
...
Read More...
开心网是一个人气蛮高的sns社区,虽然在走下坡路了,在国内依然算是顶尖了,今天我们就来分析一下开心网的设计架构是怎样的。因为手头没有这方面的资料,也没有和开心网的程序员有过什么交流,所以今天所写的一切都是自己的猜测而已。不能对号入座。
关于开心网的系统架构分析
一.入口篇
从http://www.kaixin001.com/,从这个页面可以看到,开心网的图片,是放在http://img.kaixin001.com上的,做了程序与图片的分离(http://www.kaixin001.com/i...这个不知为什么没有分离)。
下面来看一下开心网前端的服务器情况,nslookup一下,可以看到,一共有下面的17个IP
220.181.66.138,123.103.12.24,123.103.12.25,123.103.12.26,123.103.12.27
123.103.12.28,123.103.12.36,123.103.12.37,123.103.12.38,123.103.12.39
123.103.101.98,123.103.101.107,12...
Read More...
关于开心网的系统架构分析
一.入口篇
从http://www.kaixin001.com/,从这个页面可以看到,开心网的图片,是放在http://img.kaixin001.com上的,做了程序与图片的分离(http://www.kaixin001.com/i...这个不知为什么没有分离)。
下面来看一下开心网前端的服务器情况,nslookup一下,可以看到,一共有下面的17个IP
220.181.66.138,123.103.12.24,123.103.12.25,123.103.12.26,123.103.12.27
123.103.12.28,123.103.12.36,123.103.12.37,123.103.12.38,123.103.12.39
123.103.101.98,123.103.101.107,12...
Read More...
网站架构收集
来自sudone.com 服务器系统架构分析日志
csdn.net的系统架构研究 http://sudone.com/archie/csdn_archive.html
图片服务器的hash架构 http://sudone.com/archie/image_hash.html
天涯bbs系统架构分析 http://sudone.com/archie/tianya.cn.html
v.2008.163.com对新架构的尝试 http://sudone.com/archie/v.2008.163.com.html
nginx和squid配合搭建的web服务器前端系统 http://sudone.com/archie/app_nginx_squid.html
nginx作为最前端的web cache系统 http://sudone.com/archie/app-nginx-squid-nginx.html
新型的大型bbs架构(squid+nginx) http://sudone.com/archie/archi_bbs.html
当前比较适用的海量小文件系统架构方案 ...
Read More...
来自sudone.com 服务器系统架构分析日志
csdn.net的系统架构研究 http://sudone.com/archie/csdn_archive.html
图片服务器的hash架构 http://sudone.com/archie/image_hash.html
天涯bbs系统架构分析 http://sudone.com/archie/tianya.cn.html
v.2008.163.com对新架构的尝试 http://sudone.com/archie/v.2008.163.com.html
nginx和squid配合搭建的web服务器前端系统 http://sudone.com/archie/app_nginx_squid.html
nginx作为最前端的web cache系统 http://sudone.com/archie/app-nginx-squid-nginx.html
新型的大型bbs架构(squid+nginx) http://sudone.com/archie/archi_bbs.html
当前比较适用的海量小文件系统架构方案 ...
Read More...
页面加载对访问的影响
[ 2009-10-30 23:43:51 | Author: 振华 ]
页面访问慢是网站公认的死穴,如果页面都没法访问,往后再精彩的体验都等于零。这个问题如果专业点说,叫做“加载”呈现效率。那么具体了讲,除常规的服务器处理速度、服务器端网络带宽、客户端网络带宽等“硬”问题外,有哪些是技术上没处理好的“软”问题?
举个例子,某页面浏览到一个地方卡住了,至少要等十几秒才出来内容。排查原因,浏览其他网站页面很快,说明客户端网络带宽没问题;浏览同个服务器上其他网站页面都很快,说明服务器的处理速度和网络带宽也没问题。分析代码可能有好几种情况,在YUI官方加速网站的最佳办法提到了13条方法,对于普通产品来说,个人认为有几条应该强化注意,其他(灰色)从性价比上来说则成本有点高。
Read More...
举个例子,某页面浏览到一个地方卡住了,至少要等十几秒才出来内容。排查原因,浏览其他网站页面很快,说明客户端网络带宽没问题;浏览同个服务器上其他网站页面都很快,说明服务器的处理速度和网络带宽也没问题。分析代码可能有好几种情况,在YUI官方加速网站的最佳办法提到了13条方法,对于普通产品来说,个人认为有几条应该强化注意,其他(灰色)从性价比上来说则成本有点高。
- Make Fewer HTTP Requests 更少的HTTP请求
- Use a Content Delivery Network 使用CDN
- Add an Expires Header 指定过期时间
Read More...
Struts 标签与JSP效率对比
[ 2009-10-30 23:40:12 | Author: 振华 ]
先将Struts标签与JSP的代码进行比较
1.JSP版本
Read More...
1.JSP版本
< % long s=System.currentTimeMillis();%>
< SPAN style="DISPLAY: none">
< % for(int i=0;i<10000;i++){%>
< %=theAction.getQueryString()%>
< %}%>
< /SPAN>
< % long e=System.currentTimeMillis();%>
< %=(e-s)%>
2.webwork (webwork版本,也可换成Struts标签)< SPAN style="DISPLAY: none">
< % for(int i=0;i<10000;i++){%>
< %=theAction.getQueryString()%>
< %}%>
< /SPAN>
< % long e=System.currentTimeMillis();%>
< %=(e-s)%>
< % long s=System.currentTimeMillis();%>
< % for(int i=0;i<10000;i++){%>
< ?xml:namespace prefix = ww />< ?xml:namespace prefix = ww />
< %}%>
< /SPAN>
< % long e=System.currentTimeMillis();%>
< %=(e-s)%>
...< % for(int i=0;i<10000;i++){%>
< ?xml:namespace prefix = ww />< ?xml:namespace prefix = ww />
< %}%>
< /SPAN>
< % long e=System.currentTimeMillis();%>
< %=(e-s)%>
Read More...












