当前位置: 首页 > news >正文

web中缓存的几种方式


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

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

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

 

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

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

 

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

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

 

4 客户端浏览器缓存

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

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

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

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

 

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

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

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

http://www.lryc.cn/news/185515.html

相关文章:

  • Stable Diffusion生成图片
  • MySQL增删查改(进阶1)
  • RabbitMQ-发布订阅模式和路由模式
  • RabbitMQ-主题模式
  • 阅读文献小技巧
  • 简易的贪吃蛇小游戏(以后或许会更新)C++/C语言
  • 23云计算全国职业技能大赛容器云-容器编排
  • 哨兵(Sentinel-1、2)数据下载
  • 开启AI大模型时代|「Transformer论文精读」
  • 【小沐学前端】Windows下搭建WordPress(nginx1.25、PHP8.2、WordPress6.3、MySQL5.7)
  • centos8 Error: Failed to download metadata for repo ‘appstream‘
  • 键盘上F1至F12键的作用
  • 2023年湘潭大学OJ作业2 2023年下学期《C语言》作业0x01-数学计算 XTU OJ 1080,1081,1082,1083,1084
  • C/C++ 进程间通信system V IPC对象超详细讲解(系统性学习day9)
  • python—如何提取word中指定内容
  • 分享几个通用个人简历模板|行业通用
  • 如何正确操作封箱机
  • mysql面试题7:MySQL事务原理是什么?MySQL事务的隔离级别有哪些?
  • vue 项目打包性能分析插件 webpack-bundle-analyzer
  • C++ day2
  • 【Kafka专题】Kafka集群架构设计原理详解
  • Docker 镜像的缓存特性
  • Javascript 笔记:object
  • 【vue3】可编辑el-table
  • 一个开源的安卓相机:OpenCamera
  • 分类预测 | MATLAB实现POA-CNN鹈鹕算法优化卷积神经网络多特征分类预测
  • 学习网络编程No.7【应用层之序列化和反序列化】
  • 小谈设计模式(10)—原型模式
  • 用《斗破苍穹》的视角打开C#3 标签与反射(人物创建与斗技使用)
  • c语言进阶部分详解(详细解析字符串常用函数,并进行模拟实现(下))