看了构建高性能的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

web中缓存的几种方式相关推荐

  1. linux下实现web数据同步的四种方式(性能比较)

    实现web数据同步的四种方式 ======================================= 1.nfs实现web数据共享 2.rsync +inotify实现web数据同步 3.rs ...

  2. 谈谈本地缓存的几种方式以及他们的区别?

    谈谈本地缓存的几种方式以及他们的区别? 说起本地缓存,大家想到的应该都是这几个方法:localStorage.sessionStorage.cookie. 相同点不必我再多说了,都可以实现本地缓存的效 ...

  3. 实现web数据同步的四种方式

    实现web数据同步的四种方式 ======================================= 1.nfs实现web数据共享 2.rsync +inotify实现web数据同步 3.rs ...

  4. WEB通信交互的几种方式

    WEB通信交互的几种方式 - 实时通信发展过程简介 简单介绍一下现在的WEB通信有以下几种方式:最基本的http请求方式,Ajax轮询,Ajax长轮询,HTML5推送事件,HTML5的WebSocke ...

  5. mysql 的几种缓存_数据库缓存的几种方式

    数据库缓存的几种方式 引入缓存可以提高性能,但是数据会存在两份,一份在数据库中,一份在缓存中,如果更新其中任何一份会引起数据的不一致,数据的完整性被破坏了,因此,同步数据库和缓存的这两份数据就非常重要 ...

  6. 12月18日云栖精选夜读 | Java 中创建对象的 5 种方式!...

    作为Java开发者,我们每天创建很多对象,但我们通常使用依赖管理系统,比如Spring去创建对象.然而这里有很多创建对象的方法,我们会在这篇文章中学到. Java中有5种创建对象的方式,下面给出它们的 ...

  7. Java中创建对象的几种方式

    Java中创建对象的几种方式 1.使用new创建对象,在堆上创建. 2.克隆 3.反序列化 4.反射创建对象 5.NIO中可以使用本地方法直接分配堆外内存. 转载于:https://www.cnblo ...

  8. C++使用命名空间中成员的三种方式

    通过简单的代码来介绍使用命名空间中成员的三种方式(我们最常用到的命名空间是是标准库std,下面的命名空间都以std为例): 使用作用域符:: 1 #include<iostream> 2 ...

  9. Java中创建对象的四种方式

    为什么80%的码农都做不了架构师?>>>    Java中创建对象的四种方式 (1) 用new语句创建对象,这是最常见的创建对象的方法.    (2) 运用反射手段,调用java.l ...

  10. python的命名空间_python中命名空间的三种方式介绍(附示例)

    本篇文章给大家带来的内容是关于python中命名空间的三种方式介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. python中的命名空间分三种: 内置的命名空间,在启动解 ...

最新文章

  1. 微信腾讯会议进行视频面试,如何使用腾讯会议进行视频面试?
  2. function 多个函数用一个_一列转多行多列,用INDIRECT函数,给你一个可套用的公式模板...
  3. 本地java【动态监听】zk集群节点变化
  4. RUNOOB python练习题29
  5. python tableview绑定字典_在QTableView中使用各种自定义委托
  6. GitHub 再次呼吁用户采取双因素认证机制
  7. code principles
  8. SM2数字签名算法java实现
  9. 最强抓包神器 Fiddler 手机抓包详解
  10. 虚拟机 无法 ftp服务器系统,访问不到虚拟机上的ftp服务器上
  11. php 汇率接口,PHP 对交易对汇率 转换
  12. NFT平台开发部署应该选择哪条区块链?
  13. 游戏开发全免费下载资源网站
  14. 独家!10省份“12个5G+智慧公交”案例汇总!
  15. CRC码的编码、解码(循环冗余校验码)
  16. 整数的上下取整和浮点数的上下取整 java
  17. K8S==springboot项目生成image部署到K8S
  18. linux opencv 显示视频文件夹,opencv cvCaptureFromFile读取视频问题汇总
  19. kali2020之快速搜索文件工具——安装篇
  20. 夜游项目如何挖掘景区独具特色文化

热门文章

  1. DWR整合Spring
  2. 【渝粤教育】国家开放大学2018年春季 8647-21T工程经济与管理 参考试题
  3. [渝粤教育] 广东-国家-开放大学 21秋期末考试财务会计(二)10165k2
  4. 有监督的神经网络模型
  5. python_scrapy_爬虫
  6. myeclipse服务器未能创建视图:抛出意外异常。
  7. DoraHacks的笔记
  8. python学习day02
  9. linux移植简介[MS2]
  10. osgearth_backfill重采样生成低精度金字塔数据