博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
web中缓存的几种方式
阅读量:5104 次
发布时间:2019-06-13

本文共 1047 字,大约阅读时间需要 3 分钟。

看了构建高性能的web站点一书,对其中的集中web缓存进行一个总结

1 应用程序实现的动态页面缓存

应用程序把动态文件生成的html文件缓存到文件服务器,以后用户请求动态文件,直接从文件服务器加载对应的静态缓存的html文件返回给用户,这里面主要节省了动态语言的执行时间和数据库访问时间。但是会增加了缓存框架的加载和缓存查找的时间。

 

2 把解释执行的开发语言编译成为目标代码

这个主要把解释执行的高级语言,例如java,php直接编译成为平台相关的目标代码,汇编代码。在java里面,比较著名的就是即时编译器(JIT),其他的语言也要类似的机制。这里面主要节省了就是解释执行代码的时间。这个会增加即时编译的时间。

 

3 利用反向代理服务器的缓存

利用类似nginx的反向代理服务器,对请求的url对应的输出的进行缓存。这个缓存和应用程序实现的动态页面缓存类似,只不过用反向代理充当了应用程序的缓存实现。主要节省了动态余元执行时间和数据库访问时间。

 

4 客户端浏览器缓存

客户端浏览器缓存主要是通过在http头部增加

Last-Modified,If-Modified-Since,Expires,Cache-Control等标识,和服务器进行协商,是否是采用客户的本机缓存来实现。

其中这里面也会分为三种方式

1 通过Last-Modified,If-Modified-Since方式和服务器通信,客户发出http请求中包含If-Modified-Since,如果服务器端代码没有修改,服务器端返回302响应代码的请求响应头(内容不返回)客户端则直接用本机缓存的内容缓存显示结果。相当于节省了服务器执行代码时间以及数据传输时间。

2 通过Expires,Cache-Control控制,客户端发现如果上次请求的页面还未过期,通过Expires或者Cache-Control进行辨别,则直接显示本机缓存的内容,不与服务器进行通信。

 

总结一下:1 一般的高并发的应用程序,都在web层采用了以上几种缓存,一般静态资源(图片,js,css)都会采用nginx反向代理+客户端缓存来实现。

              2  对于门户网站,尤其是首页的新闻,一般都会缓存起来,可以通过反向代理也可以通过应用程序缓存实现方式

              3 对于下载或者视频网站,由于数据传输比较大,直接采用浏览器本地缓存实现。

 

转载于:https://www.cnblogs.com/aigongsi/archive/2012/05/14/2499375.html

你可能感兴趣的文章
The world is in my hands
查看>>
关于 Objective-C iVar 的一点说明
查看>>
2018 计蒜之道 初赛 第五场 A 贝壳找房搬家
查看>>
51 Nod 1086 多重背包问题(单调队列优化)
查看>>
Visual studio变慢
查看>>
快速排序QuickSort——C/C++
查看>>
json
查看>>
Oracle 11g修改字符集AL32UTF8为ZHS16GBK
查看>>
jq form表单自动赋值
查看>>
06.FileStream类的学习
查看>>
linux dns搭建
查看>>
vim中的正则表达式替换
查看>>
strongswan--linux内核ipsec policy类型
查看>>
Binding基础
查看>>
java后台设计简单的json数据接口,设置可跨域访问,前端ajax获取json数据
查看>>
jQuery 添加元素
查看>>
ESFramework ——成熟的C#网络通信框架(跨平台)
查看>>
iOS基础知识之多态问题
查看>>
2017.3.16 上午
查看>>
HTTP状态码大全
查看>>