优化网站设计系列文章总结和导读

摘自:http://www.cnblogs.com/chenxizhang/archive/2013/05/20/3088196.html

概述

其实想写这方面的文章由来已久,这个系列文章的想法是参照雅虎团队提供的35条性能优化的最佳实践(其实最早的时候是14条),再结合我自己多年的实际工作经验,结合具体的开发平台(ASP.NET),为读者提供既有理论知识、又有实践指导的参考资料,对于优化而言,本身是一个长期细致的工作(没有所谓的银弹),并且重在权衡利弊,选择最适合自己项目情况的解决方案。而要达到这样的目标,就需要对网站设计优化有较为系统的认识,知其然、也知其所以然,然后才可以熟练地运用它们。

我从4月30日开始写这个系列,到今天(5月20日)已经全部写完,主要利用了假日、周末以及晚上的时间),虽然比较辛苦,但自认为这个系列写的质量算是我迄今为止最好的,并且毫无疑问,我有理由借此机会对我的家人的支持表示感谢。

在这个过程中,我也对有关的知识温故而知新,所以说个人收获已经很大了,如果能对阅读者也能有所帮助,那是再好不过的了。

导读

这个系列的内容组织保持了雅虎团队当年所提出的35条原则的结构,以便大家对照起来进行学习。值得一说的是,这些文档虽然参照了原文,但不是对原文的翻译,更多的是加入了我的一些见解以及演绎,有些地方可能还与原文有不太一样的说明。

  1. 优化网站设计(一):减少请求数

  2. 优化网站设计(二):使用CDN

  3. 优化网站设计(三):对资源添加缓存控制

  4. 优化网站设计(四):对资源启用压缩

  5. 优化网站设计(五):在顶部放置样式定义

  6. 优化网站设计(六):在文档底部放置脚本定义或引用

  7. 优化网站设计(七):避免在CSS中使用表达式

  8. 优化网站设计(八):将脚本文件和样式表作为外部文件引用

  9. 优化网站设计(九):减少DNS查找的次数

  10. 优化网站设计(十):最小化JAVASCRIPT和CSS

  11. 优化网站设计(十一):避免重定向

  12. 优化网站设计(十二):删除重复脚本

  13. 优化网站设计(十三):配置ETags

  14. 优化网站设计(十四):使AJAX调用尽可能利用缓存特性

  15. 优化网站设计(十五):尽可能早地发送缓冲区内容

  16. 优化网站设计(十六):为AJAX请求使用GET方法

  17. 优化网站设计(十七):延迟或按需加载内容

  18. 优化网站设计(十八):预加载内容

  19. 优化网站设计(十九):减少DOM元素的数量

  20. 优化网站设计(二十):使用多个主机来平衡负载

  21. 优化网站设计(二十一):尽量少用iframe

  22. 优化网站设计(二十二):避免404错误

  23. 优化网站设计(二十三):减小Cookie的体积

  24. 优化网站设计(二十四):通过使用不同的主机减少对cookie的使用

  25. 优化网站设计(二十五):避免对DOM元素进行过多操作

  26. 优化网站设计(二十六):设计“智能”的事件处理程序

  27. 优化网站设计(二十七):使用link而不是@import导入样式表

  28. 优化网站设计(二十八):避免使用Filters(滤镜)

  29. 优化网站设计(二十九):优化图片

  30. 优化网站设计(三十):优化CSS sprites

  31. 优化网站设计(三十一):不要在页面中缩放图片

  32. 优化网站设计(三十二):使favicon.ico文件尽可能小并且可以缓存

  33. 优化网站设计(三十三):尽量使单个内容体积小于25KB

  34. 优化网站设计(三十四):将组件直接打包到页面

  35. 优化网站设计(三十五):避免将img的src属性设置为空白

权衡

我多次提到权衡这个词,就好比一个架构师被问到“什么才是最好的架构?”这样的问题的时候,最合理的回答可能真的是“这个得看情况”(虽然这样的回答可能显得有点像外交辞令),因为技术是很多的,架构也很多,没有哪个架构对所有业务场景都是合适的。

同理,我们提到了很多原则,这些原则各自有它的侧重点。很显然,他们可能还互相有冲突。那么,这能说明什么呢?这难道说明这些原则不合理吗?当然不是,正好相反,这才是合理的。

为了帮助大家更好地了解这些原则之间的关系,抑或是互斥的、抑或是互补的,我整理了一个表格如下,给大家参考。

图中红色标识出来的原则就是或多或少会有互斥的。遇到这些原则,你需要兼顾到其他的原则,两害相权取其轻,做出最适合于你的实际情况的选择。

没有标识颜色的,标识这些原则是有互补性的,或者至少不冲突。

工具

我在编写本系列文章的时候,用到如下的工具

  1. 开发工具:Visual Studio 2012。我用的是2012,但如果想要跟着做练习,有2010也就可以了。

  2. 调试工具:
    1. Fiddler: :http://fiddler2.com/home 这是一个独立的网络测试和调试工具。
    2. IE 自带的开发工具(通过F12调出):我用的是IE 10,最好你至少有 IE 9. http://msdn.microsoft.com/en-us/library/ie/gg589507(v=vs.85).aspx
    3. Chrome自带的开发工具(通过F12调出):使用最新版本即可。https://developers.google.com/chrome-developer-tools/
    4. Chrome中安装的Yslow插件:https://chrome.google.com/webstore/detail/yslow/ninejjcohidippngpapiilnmkgllmakh

最后,希望这个系列文章对大家有些帮助!

优化网站设计系列文章总结和导读,布布扣,bubuko.com

时间: 2025-01-02 18:28:53

优化网站设计系列文章总结和导读的相关文章

NET架构设计、框架设计系列文章总结

NET架构设计.框架设计系列文章总结 从事.NET开发到现在已经有七个年头了.慢慢的可能会很少写.NET文章了.不知不觉竟然走了这么多年,热爱.NET热爱c#.突然想对这一路的经历进行一个总结. 是时候开始下一阶段的旅途,希望这些文章可以在发挥点价值作用. 架构设计: ElasticSearch大数据分布式弹性搜索引擎使用 (推荐) DDD实施经验分享-价值导向.从上往下进行(圈内第一个吃螃蟹DDD实施方案)(推荐) 软件工程-思考项目开发那些事(一)(推荐) SOA架构设计经验分享-架构.职责

领域驱动设计系列文章(1)——通过现实例子显示领域驱动设计的威力(转)

http://www.blogjava.net/johnnylzb/archive/2010/05/15/321057.html 领域驱动设计系列文章(1)——通过现实例子显示领域驱动设计的威力 曾经参与过系统维护或是在现有系统中进行迭代开发的软件工程师们,你们是否有过这样的痛苦经历:当需要修改一个Bug的时候,面对一个类中成百上千行的代码,没有注释,千奇百怪的方法和变量名字,层层嵌套的方法调用,混乱不堪的结构,不要说准确找到Bug所在的位置,就是要清晰知道一段代码究竟是做了什么也非常困难,最终

[转]领域驱动设计系列文章(2)——浅析VO、DTO、DO、PO的概念、区别和用处

原文地址:http://www.blogjava.net/johnnylzb/archive/2010/05/27/321968.html 上一篇文章作为一个引子,说明了领域驱动设计的优势,从本篇文章开始,笔者将会结合自己的实际经验,谈及领域驱动设计的应用.本篇文章主要讨论一下我们经常会用到的一些对象:VO.DTO.DO和PO. 由于不同的项目和开发人员有不同的命名习惯,这里我首先对上述的概念进行一个简单描述,名字只是个标识,我们重点关注其概念: 概念: VO(View Object):视图对象

《领域驱动设计系列文章(2)——浅析VO、DTO、DO、PO的概念、区别和用处》

本篇文章主要讨论一下我们经常会用到的一些对象:VO.DTO.DO和PO. 由于不同的项目和开发人员有不同的命名习惯,这里我首先对上述的概念进行一个简单描述,名字只是个标识,我们重点关注其概念: 概念: VO(View Object):视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来. DTO(Data Transfer Object):数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高

领域驱动设计系列文章(3)——有选择性的使用领域驱动设计

本系列的第一篇博文抛砖引玉,大谈领域驱动设计的优势,这里笔者还是希望以客观的态度,谈谈领域驱动设计的缺点及其不适合使用的场景,以让读者可以有选择性的使用领域驱动设计. 我们知道,没有最好,只有最合适,设计也是一样.因此,所谓设计,就是以你和你的团队的知识.经验和智慧,全面充分的考虑各种内外因素后,在你们的设计方案中作出合理的选择的过程.而这些影响你们选择的因素主要有: 技术框架的特征和约束(如果你的项目决定使用C语言进行开发,那么首先在设计方法上,就需要使用面向过程而非面向对象的设计方法). 时

领域驱动设计系列文章汇总

Entity Framework之领域驱动设计实践 EntityFramework之领域驱动设计实践 - 前言 EntityFramework之领域驱动设计实践 (一):从DataTable到EntityObject EntityFramework之领域驱动设计实践 (二):分层架构 EntityFramework之领域驱动设计实践 (三):案例:一个简易的销售系统 EntityFramework之领域驱动设计实践 (四):存储过程 - 领域驱动的反模式 EntityFramework之领域驱动

网站安全系列文章(一)加密和签名

1. 加密概述 加密应用场景 1) 密码加密,常用于登录密码和支付密码等,此类加密的特点是希望密码加密之后不能被解密,因此可以比较安全的保存密码而不会泄漏明文,因此适合用不可逆加密算法,且不需要密钥,目前这类加密算法唯一的破解方法是暴力破解,即用密码字典等手段 不可逆的加密算法有md5 2) 网络传输报文加密 网络传输如果用明文,容易被截取,之后泄漏用户敏感信息,因此对于交易类等安全要求较高的报文传输,要对其进行加密,且要选择可逆的加密算法,服务端需要解密,可以选择的加密算法有rsa,3des等

优化算法入门系列文章目录(更新中):

1. 模拟退火算法 2. 遗传算法 一. 爬山算法 ( Hill Climbing ) 介绍模拟退火前,先介绍爬山算法.爬山算法是一种简单的贪心搜索算法,该算法每次从当前解的临近解空间中选择一个最优解作为当前解,直到达到一个局部最优解. 爬山算法实现很简单,其主要缺点是会陷入局部最优解,而不一定能搜索到全局最优解.如图1所示:假设C点为当前解,爬山算法搜索到A点这个局部最优解就会停止搜索,因为在A点无论向那个方向小幅度移动都不能得到更优的解. 图1     二. 模拟退火(SA,Simulate

特别好的大型网站架构系列文章,留下来慢慢看

http://www.cnblogs.com/itfly8/p/5043435.html