决定花一段时间来总结一下近期看过的技术书籍,只是作为自身的学习笔记,能力有限,如有遗漏或者错误的地方还请大家批评指正。
《构建高性能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组件分离