网站性能提升最佳实践三
https://developer.yahoo.com/performance/rules.html?guccounter=1#csslink
- Content
- Server
- Cookie
- CSS
- JavaScript
- Images
- Mobile
原文从七个方面总结网站性能提升。
本篇总结Cookie、CSS、Mobile方面。
Cookie
Reduce Cookie Size 减小cookie大小
使用HTTP cookie的原因有多种,例如身份验证和个性化
服务器和浏览器通过HTTP headers交换有关cookie的信息
尽可能减小cookie的大小,有助于减少对用户响应时间的影响
Use Cookie-Free Domains for Components 尽可能不使用cookie
确保使用无Cookie的请求来请求静态组件
创建一个子域并在其中托管所有静态组件
一些代理可能拒绝缓存带cookie的请求得到的组件
CSS
Put Stylesheets at Top 样式文件放到顶部
将样式表放到HEAD可以让页面逐步呈现
Avoid CSS Expressions 避免使用CSS表达式
css表达式可以动态的设置css属性
但是其调用次数过多,例如鼠标在页面上移动、放大缩小了窗口、页面滚动等
可以使用event handlers作为替代
Choose <link>
Over @import 使用link而不是@import
In IE @import
behaves the same as using <link>
at the bottom of the page, so it’s best not to use it.
Avoid Filters 避免使用Filters
IE专有的AlphaImageLoader过滤器旨在解决IE版本<7的半透明真彩色PNG的问题。该过滤器的问题是,当图像被下载时,它会阻止渲染并冻结浏览器。它还会增加内存消耗,而且是按每个元素应用,而不是按每张图片应用,所以问题会成倍增加。
最好的办法是完全避免使用AlphaImageLoader,而使用优雅降级的PNG8代替,这些在IE中都是可以的。如果你实在需要AlphaImageLoader,请使用_filter
,以免影响IE7以上用户。
Mobile
Keep Components Under 25 KB 组件不超过25KB
此限制与以下事实有关:iPhone不会缓存大于25K的组件。
请注意,这是未压缩的大小。
缩小在这里非常重要,因为仅使用gzip可能还不够。
Pack Components Into a Multipart Document 打包组件
将组件打包到一个多部分的文档中,就像一封带有附件的电子邮件,它可以帮助你用一个HTTP请求获取多个组件
HTTP requests are expensive!
使用这项技术时,首先检查用户代理是否支持(iphone就不支持