读书笔记系列之一----《构建高性能WEB站点》

时间:2022-03-12 19:48:14

           决定花一段时间来总结一下近期看过的技术书籍,只是作为自身的学习笔记,能力有限,如有遗漏或者错误的地方还请大家批评指正。


     《构建高性能WEB站点》

       顾名思义,这本书的目的就是告诉大家怎样构建一个高性能的WEB站点,对于像我一样的初级程序员来说,看过之后觉得受益匪浅。

      这本书几乎涵盖了一个web站点可能优化的方方面面,下面着重讲一下我在这本书中学到的我认为比较重要的知识。

      

       第一章 绪论

       这一张总体讲了一下web请求的产生到响应的整体过程,影响用户等待的因素都有哪些,并且概括性得讲了一些提高性能的方法,像增加带宽、使用缓存(缓存分为很多种:动态内容缓存、浏览器缓存、web服务器缓存、反向代理缓存和分布式缓存等)、减少请求(交互性和性能的权衡)、页面组件分离(说到这里,有时间应该读一下《淘宝技术这十年》)、使用负载均衡、优化数据库、减少视觉等待(涉及人机交互。。)。

       可以说,上面的这些技术,单拿出一相来都能研究好久,此书并未做深入的讲解,只是停留在概念范畴。

       

       第二章  数据的网络传输

       这一章主要讲了一些基本的计算机网络知识,没什么可讲的,主要就是明白什么是带宽,响应时间怎么计算等。


       第三章 服务器并发处理能力

       大篇幅的讲什么是吞吐率、操作系统知识。

       长连接(Keep-Alive):即在一次TCP连接中,多次发送数据而不断开连接。是否采用长连接,完全取决于应用特点和需要。

        然后就是我认为比较重要的:IO模型。这本书里面讲的过于简单了,这个问题值得下次深入的研究,这里主要讲一下同步和异步的区别,阻塞和非阻塞的区别:阻塞和非阻塞指的当前的进程访问的数据尚未就绪,进程是否需要等待;同步和异步指的是数据的访问机制,同步指主动请求等待IO操作完成,异步主动请求,等待IO操作完成后主动通知进程,数据IO时不需要阻塞。

        任务:要好好研究一下java IO模型和unix IO模型


        第四章 动态内容缓存


        第五章 动态脚本加速

        opcode(Operate Code)操作码。

        这章用一句话概括就是:缓存解释器生成的中间代码opcode以加快动态脚本执行速度


        第六章 浏览器缓存

        浏览器一般会在用户的文件系统上创建一个目录,用于存放缓存文件。

        缓存协商:浏览器和服务器通过HTTP协议协商缓存的使用方式。协商方法:Last-Modified 方式和ETag方式。我认为ETag方式更加合理一些。还有一种彻底消灭请求的方式:浏览器缓存截至期expires,他告诉浏览器缓存何时过期,之后浏览器就不需要再通过发送HTTP请求问了。

 

       第七章  web服务器缓存

       URL Rewrite(地址重写)。


       第八章  反向代理缓存

       反向代理:web服务器隐藏在代理服务器后面。

       反向代理的主要目的:基于缓存的加速,还有负载均衡?


       第九章 web组件分离