Skip to content

CDN概述和全站加速

CDN概述

首先了解CDN是什么,全称是Content Delivery Network 中文翻译“内容分发网络”。简单解释就是把资源也就是内容分布式存储,然后利用DNS技术的支持,使得用户可以在最近的网络节点访问数据。这样不仅节省了网络消耗,也避免了单点拥塞和单点故障。也因为CDN的分布式存储的特点,决定了这类资源的更新效率会比较低,因此CDN通常被作为一种缓存技术来使用。

配置一个CDN有几个点是必不可少的,

一个就是源站,也就是被CDN分发的内容的源头数据。它是一个资源的最新和最权威版本,如果某个CDN节点的数据丢失,他总是会去源站拷贝。

当我们配置了源站,CDN的服务商通常会给我们一个域名,这个域名的解析结果通常是动态的,也就是说会随着你的网络环境或地理位置,返回一个就近节点的IP地址,从而实现加速。大部分情况下这个域名非常的长和难看,没关系,我们可以为他设置一个我们自己喜欢的域名的CNAME记录。这样就可以用我们自己的域名访问了。

配置完上面两项,剩下最关键一点就是缓存配置。哪些资源会被缓存,缓存多久,哪些资源不缓存。这是一个关键问题,缓存太强影响更新,太少又发挥不了CDN的优势。

全站CDN

CDN的配置有两种,一种是部分CDN,一种是全站CDN。

部分CDN 就是只让部分静态资源使用CDN,比如图片,JS,CSS等不会频繁改动的精态资源。我们的网站大部分是动态页面的话最好是用这种形式。比如我们有www.test.com是我们的主站地址,我们让cdn.test.com这个域名指向CDN来代替我们访问图片,JS,CSS这些。但是www.test.com还是直接访问服务器获取动态页面。

全站CDN就是我们直接把www.test.com这个域名指向CDN,再让CDN指向我们的服务器。这样一来全站的访问都会走CDN,不仅包括图片,JS,CSS,其他动态页面也会走CDN。这样有一个好处是可以隐藏我们的服务器IP,避免遭受攻击。但是这样配置就需要对缓存策略精细化配置。静态资源可以长期有效,可以设置30天甚至更久,部分动态页面,如果实时性要求没有特别高的可以设置为一小时或更少;而如果是交互页面就完全不能缓存了,必须让每次请求都回源才能保证结果的正确,这时的CDN就完全是一个代理的角色。这些缓存策略应该不难理解,那么怎么实现呢。

大部分CDN都提供URL规则设置缓存策略,比如设置.css后缀的文件缓存30天;/api目录下的请求关闭缓存;其他所有请求缓存5分钟。类似这样的规则,设置好对应的URL规则和优先级就可以。部分CDN也会支持高级缓存策略,可以根据http response 的Cache – Control和Last-Modified等头信息来设置,这样的策略会更灵活,每个响应可以自己决定被缓存多久。但是也会显得更复杂一点。总之,用哪种方式设置缓存还是要看你的业务需求。

推荐配置

推荐一些全站加速时候的静态文件后缀。

.htm;.html;.js;.css;.json;.md;.csv;.xml;.log;.conf;.vue;.jpg;.jpeg;.gif;.png;.tif;.tiff;.bmp;.svg;.psd;.ico;.tga;.imb;.mp3;.mp4;.avi;.mpeg;.rm;.ra;.ogg;.wav;.wmv;.rmi;.aac;.rmvb;.mkv;.flv;.swf;.mov;.movie;.exe;.ios;.apk;.ipa;.pxl;.sis;.cab;.deb;.rar;.zip;.gzip;.tar;.7z;.bzip2;.dmg;.gz;.wim;.tbz;.tpz;.z;.jar;.ttf;.otf;.woff;.woff2;.eot;.sfnt
分享到:
Published in程序猿的东西

Be First to Comment

发表评论