缓存(CDN缓存,浏览器(客户端)缓存)
1.什么是缓存?
缓存是一种数据结构,用于快速查找以及执行的操作结果。因此,如果一个操作执行起来很慢,对于常用的输入数据就可以将操作的结果缓存,并在下次调用该操作时使用缓存的数据。
缓存是一个到处都存在的用空间换时间的例子。通过使用多余的空间,我们能够获取更快的速度。
首先,看看没有网站没有接入CDN时,用户浏览器与服务器是如何交互的:
用户在浏览网站的时候,浏览器能够在本地保存网站中的图片或者其他文件的副本,这样用户再次访问该网站的时候,浏览器就不用再下载全部的文件,减少了下载量意味着提高了页面加载的速度。
但是如果在中间加上一层CDN,那么用户浏览器与服务器的交互如下:
客户端浏览器先检查是否有本地缓存是否过期,如果过期,则向CDN边缘节点发起请求,CDN边缘节点会检测用户请求数据的缓存是否过期,如果没有过期,则直接响应用户请求,此时一个完成http请求结束;如果数据已经过期,那么CDN还需要向源站发出回源请求(back to the source request),来拉取最新的数据。
CDN的典型拓扑图如下:
可以看到,在存在CDN的场景下,数据经历了客户端(浏览器)缓存和CDN边缘节点缓存两个阶段
2.下面分别对这两个阶段的缓存进行详细的剖析:
(1)CDN缓存
什么是CDN缓存?
其实CDN缓存就相当于火车票代售点
CDN的优势很明显:
浏览器本地缓存失效后,浏览器会向CDN边缘节点发起请求。类似浏览器缓存,CDN边缘节点也存在着一套缓存机制。
CDN缓存的缺点
CDN缓存策略
CDN边缘节点缓存策略因服务商不同而不同,但一般都会遵循http标准协议,通过http响应头中的Cache-control: max-age的字段来设置CDN边缘节点数据缓存时间。
CDN缓存刷新
通常情况下,通过修改时间来比较文件是可行的。但是在一些特殊情况,例如服务器的时钟发生了错误,服务器时钟进行修改,夏时制DST到来后服务器时间没有及时更新,这些都会引起通过修改时间比较文件版本的问题。
转载于:https://www.cnblogs.com/GumpYan/p/5728799.html
缓存(CDN缓存,浏览器(客户端)缓存)相关推荐
- Web缓存机制(浏览器缓存 CDN缓存 DNS缓存)
在本片文章中,将阅读到的内容有: web缓存的类型 1.1数据库数据缓存 1.2 服务器端缓存 1.2.1 代理服务器缓存 1.2.2 CDN缓存 1.2.3 DNS缓存 1.3 浏览器端缓存 1.3 ...
- 浏览器HTTP缓存机制
介绍HTTP缓存之前先简单说一下Web缓存 Web缓存是一种保存Web资源副本并在下次请求时直接使用该副本的技术. Web缓存可以分为这几种:浏览器缓存.CDN缓存.服务器缓存.数据库数据缓存 .因为 ...
- 浏览器刷新+缓存原理
为什么要使用web缓存? Web缓存存在于服务器和客户端之间.Web缓存密切注视着服务器-客户端之间的通信,监控请求,并且把请求输出的内容(例如html页面. 图片和文件)另存一份:然后,如果下一个请 ...
- 【浏览器】浏览器的缓存机制
文章目录 1. 缓存位置 1.1 Service Worker 1.2 Memory Cache 1.3 Disk Cache 1.4 Push Cache 2. 缓存过程分析 3. 强制缓存 3.1 ...
- 版本更新带来的缓存问题_浏览器缓存原理总结
作者: Poetry 来源:http://blog.poetries.top/2019/01/02/browser-cache/ 一.浏览器缓存基本认识 分为强缓存和协商缓存 1.浏览器在加载资源时, ...
- 里面怎么缓存图片_浏览器缓存原理总结
一.浏览器缓存基本认识 分为强缓存和协商缓存 1.浏览器在加载资源时,先根据这个资源的一些http header判断它是否命中强缓存,强缓存如果命中,浏览器直接从自己的缓存中读取资源,不会发请求到服务 ...
- 浏览器对缓存的使用规则
Http的Cache机制 由四个部分组成,Last-Modified(If-Modified-Since).Etag(If-None-Match).Cache-Control.Expires ,我会在 ...
- 谈谈浏览器的缓存机制
一.缓存机制概述 浏览器的缓存机制也就是我们说的HTTP缓存机制,是根据HTTP报文的缓存标识进行的,所以在分析浏览器缓存机制之前,我们先使用图文简单介绍一下HTTP报文,以Chrome为例 F12打 ...
- Redis系列(十四)、Redis6新特性之RESP3与客户端缓存(Client side caching)
Redis6引入新的RESP3协议,并以此为基础加入了客户端缓存的新特性,在此特性下,大大提高了应用程序的响应速度,并降低了数据库的压力,本篇就带大家来看一下Redis6的新特性:客户端缓存. 目录 ...
- nxd无盘怎么设置服务器网卡,网众NxD 6.0无盘系统的客户端缓存设置
网众NxD 6.0无盘系统的客户端缓存设置 网众NxD 6.0无盘系统的客户端缓存包含以下几个方面: 1) S盘缓存 网众特有的S盘,在NxD 6.0中真正实做了回写缓存.据测试,设置为128M即可有 ...
最新文章
- Linux那些事儿之我是Sysfs(7)dentry与inode
- 算法学习-求两个整数的最大公约数
- IntelliJ IDEA 17和Maven构建javaWeb项目
- Android利用RecognizerIntent识别语音并简单实现打电话动作
- SAP Spartacus cxFocus的config属性的赋值原理
- Bash常用快捷键及其作用
- 安装LibreOffice和字体
- vim替换字符串带斜杠_Linux vi/vim最全使用指南
- UIAppearance
- 前格式 直接将转换为当_如何将word转化为PDF格式?1分钟学会文档转换
- 英文学术论文写作有哪些经验心得?
- 技术美术个人笔记(五)——体素距离场及体积雾
- 原型工具Axure:通用操作(快捷键、常用元件、常用交互、元件库与母版、原型规范、小记)
- CSS峰会圆桌论道丨共享产业数字化升级中的安全探索
- C语言:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字
- 解决PostgreSQL远程访问报错could not connect to server:Connection refused (0x0000274D/10061)
- 简述Python数据类型
- android 联系人 中英文排序 --代码仓库
- 多思计组实验3---总线实验(含文件~)
- 用 Python 爬了猫眼3000+《指环王》影评,看看20年前的魔幻电影鼻祖在当下影迷眼中的样子...
热门文章
- matlab作图如何改变坐标刻度
- 关于i++和++i的实验结果解释
- tensorflow安装教程
- php面向对象调用方法,在面向对象的php中调用方法
- mysql导入数据表大小限制,解除phpMyAdmin导入大型MySQL数据库文件大小限制
- 网关和路由器的区别_工业网关和工业路由器的区别?
- 错误请联系管理员文件 index.php,ThinkPHP5框架在写项目过程中遇到的相关问题,以及前端问题-Go语言中文社区...
- python的celery的面试_python 面试
- python图像分类实验总结_图像分类的5种技术,总结并归纳算法、实现方式,并进行实验验证...
- day06 : 01 Oracle 体系结构概念,内存结构,内存结构(服务器进程和用户进程)