优化网站设计(二十四):通过使用不同的主机减少对cookie的使用
前言
网站设计的优化是一个很大的话题,有一些通用的原则,也有针对不同开发平台的一些建议。这方面的研究一直没有停止过,我在不同的场合也分享过这样的话题。
作为通用的原则,雅虎的工程师团队曾经给出过35个最佳实践。这个列表请参考 Best Practices for Speeding Up Your Web Site http://developer.yahoo.com/performance/rules.html,同时,他们还发布了一个相应的测试工具Yslow http://developer.yahoo.com/yslow/
我强烈推荐所有的网站开发人员都应该学习这些最佳实践,并结合自己的实际项目情况进行应用。 接下来的一段时间,我将结合ASP.NET这个开发平台,针对这些原则,通过一个系列文章的形式,做些讲解和演绎,以帮助大家更好地理解这些原则,并且更好地使用他们。
准备工作
为了跟随我进行后续的学习,你需要准备如下的开发环境和工具
- Google Chrome 或者firefox ,并且安装 Yslow这个扩展组件.请注意,这个组件是雅虎提供的,但目前没有针对IE的版本。
- https://chrome.google.com/webstore/detail/yslow/ninejjcohidippngpapiilnmkgllmakh
- https://addons.mozilla.org/en-US/firefox/addon/yslow/
- 你应该对这些浏览器的开发人员工具有所了解,你可以通过按下F12键调出这个工具。
- Visaul Studio 2010 SP1 或更高版本,推荐使用Visual Studio 2012
- 你需要对ASP.NET的开发基本流程和核心技术有相当的了解,本系列文章很难对基础知识做普及。
本文要讨论的话题
这一篇我和大家讨论的是第二十四条原则:Use Cookie-Free Domains for Components (通过使用不同的主机减少对cookie的使用)
我们之前讨论过“优化网站设计(二十):使用多个主机来平衡负载”,例如
- 使用images.mydomain.com 专门处理图片请求
- 使用scripts.mydomain.com 专门处理脚本请求
- 使用www.mydomain.com 专门处理网页请求
当时我们提到的原因是:
- 提高了下载的并行度
- 由于可以使用多个服务器,所以可以提高服务器的响应能力
其实这种做法还有一个附加的奖励,以上的三个主机中,应该只有www主机才可能需要保存cookie(它对于图片和脚本来说是没有意义的),我们知道cookie会自动地发送给当前域的所有请求,我们通过将图片和脚本单独放在一个主机, 所有与www主机关联的cookie不会发送到images主机或者scripts主机,这样就可以大大地节省网络流量。
通过下图可以更加清楚地看到这个效果
下图是我访问淘宝商城的一个页面(属于vipservice.taobao.com这个主机),我们可以看到这个请求需要发送大量的cookie。(淘宝会确实跟踪我们很多信息)
该页面用到了很多图片,但由于这些图片是单独放置另外一个主机(img04.taobaocdn.com,如果细心的话,你还可以看到好几个不同的image主机,这是另外一个层面的技术了),所以对这些图片的请求,是不需要发送很多cookie的。
实际上,对于图片或者脚本(或者其他一些静态资源,例如样式表,Flash等),是不需要发送任何的cookie的。但是上图中,我们看到有一个cookie,名称为DNT ,值为1。这个cookie是干什么用的呢?如果有兴趣,可以自行搜索学习一下,我在后续也有文章会提到问题。