`

High Performance Web Sites 读书笔记1

阅读更多
前言 http 协议概要 尽可能减少 http 请求 前言 一想到优化网站,大多数情况下我们都是优化动态的后台程序,比如程序执行效率,查询数据库效率等。一些大规模的站点,比如 www.yahoo.com 等,页面的载入已经是超越了动态程序生成页面的消耗。虽然书中说 10-20% 的时间损耗在服务器端程序生成 html ,其他的损耗在浏览器和服务器的交互以及页面渲染。但是我看来,很多时候还是需要根据网站的规模和表现来评估实际损耗,给出这样的数据并不一定适应所有,甚至是大部分网站。当然,基本上是网站规模(主要是说页面内容量)越大,后台生成 html 的损耗越小——实际上大型站点的很多页面都是完全或者部分静态化的。 这方面的优化,很重要的一方面是了解常见浏览器跟服务器的交互以及解释 html 的方式。开头有提到 Parallel Downloads ,这个解释了浏览器拉取页面组件的一些方式,后面会讲述,比较有价值。还提了一条说,大多数浏览器在请求脚本的时候,会阻塞其他请求,无法并行其他请求。对很多大型站点来说,前台优化的代码,在很多情况下确实要比后台优化来得简单,快速。 http 协议概要 因为它定义了浏览器和服务器的交互方式,了解 http 协议,才能够更好的进行优化,下面主要抽取一些优化比较相关的包头简单介绍: 压缩 浏览器请求头中 Accept-Encoding: gzip,deflate 是告诉服务器它支持的压缩类型。需要注意的是,在服务器回包的时候,apache2.0 的 deflate 也会标记为 gzip 压缩。 条件请求 浏览器并不会把每个请求都发送给服务器,经常会有某些文件已经被浏览器保存起来,这时候浏览器判断被 cache 的文件信息,并把相关信息发送给跟服务器。比如一般浏览器对 cache 文件会发送 If-Modified-Since 表示被 Cache 文件的创建时间,如果服务器发现该文件自该创建以后没有被修改,就直接发给 http 包头告诉浏览器可以读 Cache 即可,这样就节省了传输的时间和服务器消耗。这时候,服务器一般都是返回经典的状态码 304 Not Modified 。 Expires 这个时间指定文件的过期时间,如果浏览器 Cache 了该文件,在没有过期的情况下,根本就不需要跟服务器发送请求。 Keep-Alive HTTP 协议是建立在 TCP 协议基础上,早期的 HTTP 实现中,每个请求都需要创建一个 socket [...]
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics