粗谈CDN
CDN:内容分发网络(content delivery network)
1、DNS解析到最快(有可能是地理上最近,也有可能是地理上远但是链路最好)的CDN缓存设备
2、从CDN获取已经缓存的资源
3、如果CDN上没有目标资源,则CDN向源站获取资源(回源),返回给请求端,同时缓存到CDN上,等他下一次的用户请求
4、CDN是如何动态更新资源:源资源服务器设置过期时间(Expire/Cache-Control),源资源服务器推送,调用CDN接口拉取资源
谈下个人见解:响应头Expire/Cache-control属于‘‘强缓存’’,适用于CDN场景,比如这样的设置header( 'Cache-Control: public, max-age=3600, s-maxage=21600' ),浏览器的缓存时间为3600秒,也就是1个小时,CDN的缓存时间是21600秒,也就是6个小时。这样浏览器一个小时内都是从本地硬盘或者内存中获取,一个小时后,从CDN获取,命中CDN(X-cache:HIT),6个小时后,CDN缓存到期,浏览器请求CDN,CDN回源,请求源服务器资源,缓存到CDN服务器上,同时响应给浏览器
但是如果使用响应头(ETag/Last-Modified)和请求头(If-Match/If-None-Match、If-Modified-Since),这些是“协商请求”,每次都要向源服务器发起协商请求,确定资源是否变化,如果使用CDN,就等于多了一个环节,不但没有利用CDN的缓存作用,反而减慢了访问速度。
关键的来了:综合以上,所以正确的使用方法是,同时使用强缓存和协商缓存,强缓存失效时间前,从本地获取,强缓存失效后,去源服务器确认本地缓存是否有效,如果有效则使用本地缓存,同时,更新强缓存的时间,如果无效,则同时更新CDN和浏览器的强缓存和协商缓存的信息
5、CDN加速原理
通过动态域名解析(DNS),网友的请求被分配到离自己最快的服务器。CDN服务器直接返回缓存文件或通过专线代理原站的内容。网络加速+内容缓存,有效提供访问速度
6、CDN缓存什么内容
缓存html、图片、css、xml等静态资源,不缓存含有?的动态地址、jsp、PHP,js文件也不缓存【除非特殊设置】。缓存原站返回HTTP状态为20*或304,不缓存其他状态(例如404,500,503)
7、CDN缓存内容的更新
a)用户首次请求,CDN从原站抓取后缓存,直到文件过期后有用户请求再次更新
b)程序主动通知CDN抓取
c)版本号
d)随机值
8、用户的行为对缓存的影响

CDN的实现原理
流程图
名对应的CNAME记录,为了得到实际IP地址,浏览器需要再次对获得的CNAME域名进行解析以得到实际的IP地址;在此过程中,使用的全局负载均衡
DNS解析,如根据地理位置信息解析对应的IP地址,使得用户能就近访问。
加速网站原有的域名即可访问,又要在为指定的网站提供加速服务的同时降低对ICP的影响,只要修改整个访问过程中的域名解析部分,以实现透明的加速服务,
下面是CDN网络实现的具体操作过程。
CDN缓存
浏览器本地缓存失效后,浏览器会向CDN边缘节点发起请求。类似浏览器缓存,CDN边缘节点也存在着一套缓存机制。
CDN缓存的缺点
CDN缓存策略
CDN边缘节点缓存策略因服务商不同而不同,但一般都会遵循http标准协议,通过http响应头中的Cache-control: max-age的字段来设置CDN边缘节点数据缓存时间。
CDN缓存刷新
CDN边缘节点对开发者是透明的,相比于浏览器Ctrl+F5的强制刷新来使浏览器本地缓存失效,开发者可以通过CDN服务商提供的“刷新缓存”接口来达到清理CDN边缘节点缓存的目的。这样开发者在更新数据后,可以使用“刷新缓存”功能来强制CDN节点上的数据缓存过期,保证客户端在访问时,拉取到最新的数据。
参考:
1、http://www.cnblogs.com/wonyun/p/5524617.html
2、http://blog.csdn.net/lu123535884/article/details/51489951
3、http://blog.csdn.net/u010472499/article/details/54290505
4、https://help.aliyun.com/knowledge_detail/40122.html
5、http://blog.csdn.net/u012028371/article/details/53907062
6、http://www.cnblogs.com/losbyday/p/5843960.html
粗谈CDN的更多相关文章
- sql 中的Bulk和C# 中的SqlBulkCopy批量插入数据 ( 回顾 and 粗谈 )
通常,我们会对于一个文本文件数据导入到数据库中,不多说,上代码. 首先,表结构如下. 其次,在我当前D盘中有个文本文件名为2.txt的文件. 在数据库中,可以这样通过一句代码插入. Bulk in ...
- 浅谈CDN、SEO、XSS、CSRF
CDN 什么是CDN 初学Web开发的时候,多多少少都会听过这个名词->CDN. CDN在我没接触之前,它给我的印象是用来优化网络请求的,我第一次用到CDN的时候是在找JS文件时.当时找不到相对 ...
- 粗谈Android中的对齐
在谈这个之前先啰嗦几个概念. 基线:书写英语单词时为了规范书写会设有四条线,从上至下第三条就是基线.基线对齐主要是为了两个控件中显示的英文单词的基线对齐,如下所示: Start:在看API的时候经常会 ...
- 分布式还是混合式? 谈CDN架构对服务质量的影响
传统分布式模型 通 常,内容分发网络(CDN)採用分布式模型.在这样的模型里, 用户的文件存放在一个源server上.而且由大量边缘server负责分发这些文件.这些边缘server的磁盘空间比較小. ...
- python粗谈面向对象(二)
浅谈super() super并不是一个函数,是一个类名,形如super(B, self)事实上调用了super类的初始化函数,产生了一个super对象:Python的多继承类是通过mro的方式来保证 ...
- 浅谈CDN加速问题
(以百度CDN进行分析) 婆说婆有理,公说公有理.是否使用CDN,不同的工程师有不同的意见. 这里呢我来进行一下简单的分析. [正方观点] 1. 提升网站加载速度:CDN通过缓存技术提升网站打开速度, ...
- 浅谈CDN技术的性能与优势
从淘宝架构中的CDN入手分析 使用CDN和反向代理提高网站性能.由于淘宝的服务器不能分布在国内的每个地方,所以不同地区的用户访问需要通过互联路由器经过不同长度的路径来访问服务器,返回路径也一样,所以数 ...
- 粗谈MySQL事务的特性和隔离级别
网上对于此类的文章已经十分饱和了,那还写的原因很简单--作为自己的理解笔记. 前言 此篇文章作为自己学习MySQL的一些个人理解,使用的引擎是InnoDb.首先先讲讲事务的概念,在<高性能 ...
- 粗谈pcap_next_ex()
pcap_next_ex(pcap_t* p,struct pcap_pkthdr** pkt_header,const u_char** pkt_data) 功能: 从interface或离线记 ...
随机推荐
- 进程管理利器Supervisor--入门简介
目录 概述 Supervisor是什么 Supervisor意图 Supervisor特性 Supervisor组件 平台需求 概述 项目运行需要后台运行,一般都是使用 nohup,但是nohup不能 ...
- gerrit工具-workflow
gerrit-workflow
- 【CF Round 429 B. Godsend】
time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...
- Codeforces 934.B A Prosperous Lot
B. A Prosperous Lot time limit per test 1 second memory limit per test 256 megabytes input standard ...
- PEP8特性
Python 的代码风格由 PEP 8 描述.这个文档描述了 Python 编程风格的方方面面.在遵守这个文档的条件下,不同程序员编写的 Python 代码可以保持最大程度的相似风格.这样就易于阅读, ...
- linux下scp
scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的.可能会稍微影响一下速度.当你服务器 ...
- DotNETCore 学习笔记 Startup、中间件、静态文件
Application Startup Startup Constructor - IHostingEnvironment - ILoggerFactory ConfigureServices - I ...
- 转圈游戏(NOIP2013)
原题传送门 好吧,这道题很水,, 首先我们一看,这就是一道快速幂的题目,k那么大... 然后第X个人的答案就是(x+m*10^k)%n啦!! 好吧,这道题没有什么注意事项 太水了 #include&l ...
- nessus plugins 离线更新
1.打开 https://plugins.nessus.org/v2/offline.php 2.申请Activation Code http://www.tenable.com/products/n ...
- OpenGL入门学习 教程 (五)三维的空间变换
http://oulehui.blog.163.com/blog/static/796146982011924428755/ 在前面绘制几何图形的时候,大家是否觉得我们绘图的范围太狭隘了呢?坐标只能从 ...