粗谈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或离线记 ...
随机推荐
- [AGC005D] ~K Perm Counting [dp]
题面 传送门 思路 首先可以明确的一点是,本题中出现不满足条件的所有的数,都是分组的 只有模$K$意义下相同的数之间才会出现不满足条件的情况,而且仅出现在相邻的情况 那么我们考虑把这个性质利用起来 我 ...
- 2017 多校1 I Curse Myself
2017 多校2 I Curse Myself(第k小生成树) 题目: 给一张带权无向连通图,该图的任意一条边最多只会经过一个简单环,定义\(V(k)为第k小生成树的权值和\),求出\(\sum_{k ...
- [摸鱼] 配置的tmux的使用攻略!
o~/.tmux.conf <>=ctrl b <>$ 重命名 <>% 水平切割 <>" 垂直切割 <>o 下一个窗口 <& ...
- cookie登录
#coding:utf-8 import tornado.httpserver import tornado.ioloop import tornado.options import tornado. ...
- 基于V4L2的视频驱动开发【转】
转自:http://blog.chinaunix.net/uid-10747583-id-298573.html Tags:V4L2驱动框架.API.操作流程…… 原文地址:http://www.ee ...
- android.useDeprecatedNdk=true
android.useDeprecatedNdk=true ndk{ moduleName "aa" abiFilter "armeabi-v7a" }
- python--控制窗体
窗体的显示和隐藏 #!/usr/bin/env python # -*- coding:utf-8 -*- # author:love_cat import win32con import win32 ...
- Selenium2+python自动化11-定位一组元素find_elements【转载】
前言 前面的几篇都是讲如何定位一个元素,有时候一个页面上有多个对象需要操作,如果一个个去定位的话,比较繁琐,这时候就可以定位一组对象. webdriver 提供了定位一组元素的方法,跟前面八种定位方式 ...
- centos7部署nagios
一.Nagios简介 Nagios是一款开源的电脑系统和网络监视工具,能有效监控Windows.Linux和Unix的主机状态,交换机路由器等网络设置,打印机等.在系统或服务状态异常时发出邮件或短信报 ...
- Delphi 的TSpeedButton按下和弹起效果
想达到这样的效果: 点击一下TSpeedButton按钮,按钮凹下去,再点击一下,按钮弹起恢复. 实现方法: 只要设置下述2个属性即可,不需要编码: ①AllowAllUp = True ②Group ...