动态脚本加速
解释器将动态脚本解释成操作码(opcode)的这一过程也存在一定的开销;动态脚本加速就是将缓存的思路搬到操作码层,实现对操作码的缓存;
PHP可以选择:APC 、eAccelerator、XCache等将opcode缓存在共享内存中。Python能选择什么?
动态脚本加速技术主要用于解决CPU、内存的系统瓶颈,对I/O引起的系统瓶颈帮助非常有限。
浏览器缓存
尽可能地让Web站点的内容缓存在用户浏览器中,这样将在一定程度上减少了服务器的计算开销,也避免了有些由于不必要重复传输而带来的带宽浪费。
IE:在用户本地设置临时文件目录,用于存放缓存。
FireFox:采用二进制文件的方式来存储和管理缓存文件,在Firefox浏览器的地址栏中输入about:cache即可查看缓存内容;除在磁盘中存储缓存,对一些命中率较高的内容同时放入内存缓存中,从而实现多级缓存;
缓存协商
浏览器和服务器通过缓存协商机制实来完成浏览器端缓存的创建、存储和过期检查等一系列过程;
缓存协商的大致过程:
Last-Modified
动态生成的内容一般不存在传统意义上静态页面的“最后修改时间”,所以需要动态程序为HTTP响应增加最后修改时间的标记;否则浏览器不会进行缓存。
ETag
ETag不是通过文件最后修改时间来判断是否需要更新,而是通过一串编码(ETag)来标记内容,ETag没有变,内容就不需要更新;
ETag由WEB服务器来生成,如Apache为一个静态文件的http响应头增加标记
ETag:74177-b-46585209c1bc0
浏览器在下一次请求的时候,在http请求头中增加标记:
If-None-Match:74177-b-46585209c1bc0
web服务器用重新计算后的ETag和浏览器请求头中的进行对比,如果相同则返回304状态码,表示没有更新,可以使用本地缓存;
如何请求页面
天天用浏览器,但是对浏览器的一些操作细节的差异还真不清楚,看看吧:
Ctrl + F5 :强制刷新,使浏览器对网页及其中的组件都直接从服务器获取,不使用缓存协商。
F5:一般刷新,等同于点浏览器的“刷新”按钮,能够使浏览器使用必要的缓存协商,但不允许使用本地缓存,即可以使Last-Modified发挥作用,而使Expires无效;
单击地址栏的“转到”,等同于输入URL后按回车,浏览器会对所有未过期内容使用本地缓存。