Best Practices for Speeding Up Your Web Site
原文:
http://developer.yahoo.com/performance/rules.html#page-nav
优化网站性能 提高网站速度访问速度的14条实践
http://www.phpv.net/html/1660.html
Minimize HTTP Requests 减少HTTP请求次数
80/20法则:http://yuiblog.com/blog/2006/11/28/performance-research-part-1/
当浏览一个页面的时候,浏览器花费80%的时间在获取外联的js,CSS,Image等等。
l Combined files:
每个页面包含的每个引用文件都需要一次HTTP请求。
最佳实践:尽可能把文件组合,例如把一个页面需要的多个js(css)文件整合到一个js(css)文件,甚至对某些访问量大的页面,直接把js和css放在页面中,而不单独做外部链接。
l CSS Sprites:
将多个image合并成一个大的image,通过CSS来控制大image的位置和展示方式,例如使用backgroud image 和background position来得到自己所需的那部分image。
中文介绍:http://oncoding.net/rebuild/css/article200904/150.html
l Image maps:
和CSS Sprites有点类似,image maps更多的是把相邻的image组合成一个大的image.
l Inline images:
把image嵌入页面中data:
URL scheme,从而减少访问image的HTTP请求,但是会增加页面的大小。而且不是所有的浏览器都支持。
Use a Content Delivery Network 使用内容分发网络
A content delivery network (CDN) is a collection of web servers distributed across multiple locations to deliver content more efficiently to users. The server selected for delivering content to a specific user is typically based on a measure of network proximity. For example, the server with the fewest network hops or the server with the quickest response time is chosen.
内容分发网络:在网络中部署节点服务器,用户访问的时候,选择最佳节点服务器。
具体介绍:http://baike.baidu.com/view/21895.htm
Add an Expires or a Cache-Control Header设置缓存时间
Browsers (and proxies) use a cache to reduce the number and size of HTTP requests, making web pages load faster. A web server uses the Expires header in the HTTP response to tell the client how long a component can be cached.
通过缓存可以减少HTTP请求次数。
l For static components: implement "Never expire" policy by setting far future Expires header
l For dynamic components: use an appropriate Cache-Control header to help the browser with conditional requests.
对不同的组件,设置不同的缓存时间。
Gzip Components GIZP压缩
目前绝大多数的浏览器都支持gzip,所以可以将网站使用的所有文本内容JS, CSS, HTML, JSP, PHP, XML等均采用gzip压缩,提高传输速度(相应速度)。
http://www.gzip.org
Put Stylesheets at the Top 样式表放在页面上方
将CSS样式表放在页面上方<HEAD>里。
Css层叠样式表,后面的可能会覆盖前面的样式,浏览器为了避免重绘页面,所以只有当所有CSS载入完成后,才展现页面。
Put Scripts at the Bottum 脚本文件放在页面最后
Avoid CSS Expressions 避免CSS表达式
Make JavaScript and CSS External Javascript和CSS外联
这一点和减少HTTP请求看起来冲突,但是如果有cache的话,外联的Javascript和CSS文件HTTP请求问题可以得到解决,而且外联后页面的大小会减少。此外,外联便于维护。
Reduce DNS Lookups 减少DNS查询
DNS查询会花20-120ms,页面中应尽量少造成DNS查询。
例如页面中包含很多广告。
Minify JavaScript and CSS 压缩Javascript和CSS
减少Javascript和CSS文件的大小。
前面也提到了由于浏览器都支持压缩传输,所以可以先用GZIP压缩,在用其他的工具压缩(例如去掉空格,替换函数名等)
工具: JSMin and YUI Compressor
在线工具:http://dean.edwards.name/packer/
Avoid Redirects 避免重定向
每次重定向都会增加一次HTTP请求。
Remove Duplicate Scripts 移除重复脚本
减少HTTP请求,减少页面大小,便于维护。
Configure Etags 配置Etags标签
客户端得缓存有可能不是最新的,通过在Server端配置Etags标签来标记当前客客户的缓存是否是最新的。
具体过程如下
1. 客户端请求一个页面(A)。
2. 服务器返回页面A,并在给A加上一个ETag。
3. 客户端展现该页面,并将页面连同ETag一起缓存。
4. 客户再次请求页面A,并将上次请求时服务器返回的ETag一起传递给服务器。
5. 服务器检查该ETag,并判断出该页面自上次客户端请求之后还未被修改,直接返回响应304(未修改——Not Modified)和一个空的响应体。
可参考:使用ETags减少Web应用带宽和负载
分享到:
相关推荐
在浏览器中对于Dom的操作和普通的脚本的操作处于两个不同的dll中,两个dll的交互是比较耗时的,优化对Dom的操作可以提高脚本的执行速度。下面是对如何优化的一些总结: 将需要多次操作的节点存储在一个变量中,避免...
JSP页面静态化总结_动态页面变为静态页面以减少访问数据库的次数提高速度.zip
Asp.net 缓存技术总结,如何提高页面访问速度,如何快速打开大数据量页面?
private 也被集成,只事派生类没有访问权限而已 virtual可加可不加 子类的空间里有父类的所有变量(static除外) 同一个函数只存在一个实体(inline除外) 子类覆盖它的函数不加virtual ,也能实现多态。 在子类的...
访问速度比较慢或者图片无法刷新出来的话,可以转移到查看,或者。如果你要提交 issue 或者 pr 的话请到 提交。 如要进群或者请教问题,请 (备注来自 Github。请直入问题,工作时间不回复)。 开始阅读之前必看 : ...
访问速度比较慢或者图片无法刷新出来的话,可以转移到查看,或者。如果你要提交 issue 或者 pr 的话请到 提交。 如要进群或者请教问题,请 (备注来自 Github。请直入问题,工作时间不回复)。 开始阅读之前必看 : ...
第一章当前系统结构的问题功耗大,可进一步开发的指令并行级很少,且存储器访问速度提高缓慢。系统结构的重大转折:从单纯依靠 指令集并行 转向 开发线程级并行和数据级
在客户需求、全球供应链和远程工作需求方面,各个组织正在以前所未有的速度发生变化。他们需要快速实现随时随地的协作和访问,同时支持创新、创造力和参与。 企业领导者必须适应短期中断,同时为获得长期价值奠定...
尽量使用寄存器而非内存变量以提高速度。 熟悉并利用CPU的指令集特性,如流水线、分支预测等进行优化。 数据表示与处理: 利用位操作进行高效的逻辑运算和位段操作。 适当的数据对齐可以避免不必要的内存访问惩罚...
支持多种数据库类型的访问,提高了系统的可移植性。 2. 公共业务逻辑层:封装常用的业务逻辑,如用户验证、权限验证等,减少重复开发。 3. 公共配置管理层:通过properties文件实现配置管理,提高系统的灵活性和扩展性。 ...
计算机网络技术实习总结 学习生活已经结束了出来也差不多半年了,我在公司里主要是负责公司内网的管理 ,其涉及到公司内联网的正常登陆和访问,公司内各部门主机是否正常互联,有无被病 毒感染、传播。使得公司内的...
第4章可以帮助你使用缓存来提高用户再次访问时的速度。第5章是关于要摒弃一次性的页面加载方式和重构应用程序以使实际上和感觉到的性能都达到最优的。书的后半部分是专门讲触摸界面的,特别是尽可能地让它们更平稳和...
这将减少对数据库和服务器的访问次数,提高应用程序的响应速度和吞吐量。 异步编程:我们将使用ASP.NET提供的异步编程模型来处理并发请求和长时间运行的任务。这将提高应用程序的并发能力和响应性能,确保用户在高...
如果一个表的数据量很大,但实际用时只用一小部分,可以采用临时表将要用的数据取出,以提高表连接时速度 4 使用nested table 有数据集需要被多次读取时,可以将数据一次读到内存表(nested table),后面直接访问...
但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。 21、...
一般SQL 语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速 度。 2.当对数据库进行复杂操作时(如对多个表进行 Update,Insert,Query,Delete 时),可将此复杂操作用存储过程封装起来 与数据库提供的事务...
引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为 null,而原始...
Storage Area Network 大数据时代 纽交所每天产生超过1T的交易数据 (2008年) Facebook存储照片约100亿张,大小约为1PB 硬盘访问速度: 100MB/s 读取1T的数据: 2.5小时 数据瓶颈 问题总结 传统单机计算: 计算资源...