使用CDN时注意的问题

CDN工作原理[编辑]

使用了CDN缓存后的网站的访问过程为:
1)、用户向浏览器提供要访问的域名;
2)、浏览器调用域名解析库对域名进行解析,由于CDN对域名解析过程进行了调整,所以解析函数库一般得到的是该域名对应的CNAME记录,为了得到实际IP地址,浏览器需要再次对获得的CNAME域名进行解析以得到实际的IP地址;在此过程中,使用的全局负载均衡DNS解析,如根据地理位置信息解析对应的IP地址,使得用户能就近访问。
3)、此次解析得到CDN缓存服务器的IP地址,浏览器在得到实际的IP地址以后,向缓存服务器发出访问请求;
4)、缓存服务器根据浏览器提供的要访问的域名,通过Cache内部专用DNS解析得到此域名的实际IP地址,再由缓存服务器向此实际IP地址提交访问请求;
5)、缓存服务器从实际IP地址得得到内容以后,一方面在本地进行保存,以备以后使用,另一方面把获取的数据返回给客户端,完成数据服务过程;
6)、客户端得到由缓存服务器返回的数据以后显示出来并完成整个浏览的数据请求过程。

不令CDN缓存页面[编辑]

对于后台动态页面或频繁更新的页面我们并不需要CDN进行缓存,这时除了在CDN里更改配置,还可以在页面头信息中增加Cache-Control:no-cache
No-cache.jpg

对于已修改文件的CND更新[编辑]

经常有这样的需求,当修改一个文件后需要CDN立即更新页面,还好一般CDN都有主动更新的接口,但接口可能会有限制如日调用次数限制、只能手动调用等,所以有时还是不能满足我们的需求。 不过我们还有另一种方法--改变连接。例如页面的引用的css与js文件,通过改变接连后的参数就能实现立即更新。

<link rel="stylesheet" type="text/css" href="/source/styles/reset.css?v=1.8">

<script type="text/javascript">
	var assetsVersion = '1.8';
	seajs.config({
	debug: true,
	        map: [
			[ /^(.*\.(?:css|js))(.*)$/i, '$1?v='+ assetsVersion]
			]
		});
</script>

那么当我们修改了css文件或js文件时可以像以上一样改一下版本号,那么CDN就立即更新了。