现在越来越多的网站开始使用CDN加速,国内目前比较流行的有360网站卫士、加速乐、百度云加速以及云盾,不少站长为了加快网站的访问速度,都开始使用这些免费的CDN。 然而不少人开启CDN后就放置不管,不加以任何配置,网站不仅没有加速,反而越用越卡。这是为什么呢?这就要先搞清楚CDN的加速原理了,当用户请求网页时,会首先把这个请求发送到CDN节点上,静态数据会直接调用缓存,如果是动态数据,CDN节点就要回源站获取数据,再返回给用户,这样就经历了多次转发,如果CDN节点或者源站稍有延迟,用户就会觉得网页加载缓慢。
网站静态数据的获取
网站动态数据的获取 熟知CDN加速的原理我么就能理解为什么有的人会抱怨使用百度云加速后越用越慢,而有的人就会反映越来越快。所以使用了云加速后,我们还要做好缓存设置。 余斗分享两种百度云加速CDN的配置方案 一、动静态数据皆缓存 余斗网站就是使用这种配置,网页数据无论静态还是动态,全部缓存到CDN,速度比以往是快了不少。 余斗使用的百度云加速为beta测试版,不保证以后更新后能否继续适用。 需要自己自定义规则来开启缓存!下面简单分享下DedeCMS在百度云加速下开启高速缓存的自定义规则,如图点击可进入设置:
百度云加速自定义规则的说明为: 规则自定义指对“指定URL”进行页面级规则定制(支持通配符*)。可对任意子域名、目录、甚至单个URL进行针对性的加速缓存、安全防护等配置。列表中上下关系决定优先级,靠上规则优先级高。站长可以通过点击“↑”调整优先级。新增规则优先级最低,将于30s内生效。 URL指定支持通配符*,例如 1) 对img.yoursite.com进行特定设置,需增加URL: img.yoursite.com/* 2) 对www.yoursite.com/news/ 进行特定设置,需增加URL: www.yoursite.com/news/* 3) 对www.yoursite.com所有html页面进行特定设置,需增加URL: www.yoursite.com/*.html 因为自定义规则支持通配,这就简单了!不过免费版只支持3条规则,这个就需要我们合理斟酌一下了。优先级从上往下依次降低,所以我们要保证不缓存的规则写到最上面,才能不会缓存规则覆盖。 根据余斗个人经验,一般DedeCMS网站设置如下3条规则即可: 1.网站后台:yudouyudou.com/dede/* 设置为不缓存或细致缓存
2.搜索页面:yudouyudou.com/plus/search.php*设置为不缓存
3.前台页面:*yudouyudou.com*前后通配设置为所有都缓存
解释:细致缓存其实就是只缓存静态文件,其中缓存时间或有效期请自行设定即可,无需余斗的配置来。另外由于百度云加速现在不能对单个域名设置了,所以最后的缓存规则是前后通配,保证某些网站的二级静态域名也缓存到位。这只余斗我个人经验推荐的配置,比如搜索页就可以根据自己的需要设置为其他页面,此处分享仅供参考! WordPress则推荐设置以下三个页面: 网站后台:yoursite.com/wp-admin/* 设置为不缓存或细致缓存 评论分页:yoursite.com/*/comment-page-* 设置为不缓存或细致缓存 网站前台:*yoursite.com* 设置为前后通配都缓存 这样设置好了之后,网站前台刷几下就可以看到效果了,当然还可以F12到network里面去看header的缓存命中情况。 二、只缓存静态 动静态都缓存可以解决国内低配VPS的带宽和负载这两个问题。有一些网站,本地已有缓存或者访问流量并不高,不想开启全静态缓存,因为会带来的各种数据不刷新问题。因此,我们如何既解决速度问题,又兼顾实时数据呢? 当然,开启CDN不进行整站缓存设置的话,大部分CDN会默认缓存静态文件,基本满足以上需求。但是某些CDN有个坑爹的规则:他会和谐某些关键词,访问有这些关键词的页面就提示违规并不显示。 如何解决这个问题?很简单,通过域名做动静分离即可,即只缓存静态文件: 将静态链接替换为二级域名,并开启CDN缓存。主域名则不走CDN或走CDN但不开启缓存。 主域名不走CDN也很简单,直接在解析时不开启缓存即可,也就是直接回源。
如上设置后,你的网站的速度也会很快,当然前提是你的动态部分不卡才行。 两种配置的区别 方案一 动态与静态数据都被强制缓存到CDN,这样即使是用户第一次访问网页,本地没有任何缓存,速度也很快。 方案二 只缓存静态数据,动态数据依然会到源服务器上请求。这样能解决带宽问题的同时又解决了前台数据不能实时刷新的尴尬。因为,占带宽的主要是静态文件,而非html代码。我们将大体积的静态文件托管到CDN加速,源服务器就只要负担体积很小的html代码流量了,速度自然就快了! 当然,采用方案二后很容易就出现了前文提到的开启CDN反问变慢的尴尬。解决办法也很简单,本地开启一下动态缓存即可。 |
|