WordPress网站开启CDN后回源导致访问很慢的解决方案

不少小伙伴开始使用WordPress建站的过程中,都开始使用CDN进行网站加速,比如动静分离,直接将站点上的各…

IMG_39107

不少小伙伴开始使用WordPress建站的过程中,都开始使用CDN进行网站加速,比如动静分离,直接将站点上的各类静态资源上传到CDN上进行加速访问。但是在实际应用过程时,有的小伙伴就遇到了一个开启CDN后回源很慢导致网站访问很慢的情况。这里搬主题就提供CDN深度加速的解决方案。

因为WordPress的程序是PHP+MySQL构架,尽管将静态资源放到了CDN上,但是因为有的站点上面有动态内容,因为都是将PHP直接回源,也就是调取动态内容的时候直接回源,这样保障不被缓存到。举个栗子,站点页面上有需要登陆的按钮,加速的时候不仅将登陆抵制直接设置不缓存然后回源,每个页面如果都有登陆状态的跟随的话,那意味着需要设置登陆后页面均不能缓存,这样导致每个登陆用户都需要进行回源。普通未登陆用户不受影响还是很快,但带来的问题则是大大拉慢了登陆用户对网站访问速度。

以上问题总结来就是静态资源适合CDN,动态PHP页面每次都回源,则导致网站访问变慢。那么能否将PHP页面也缓存呢?答案是可以的,前提是你的PHP页面没有交互内容(比如登陆及支付等内容)。如果有的话,那将给用户一直是一个缓存的页面,无法交互。

其实我们开启全站CDN后,不仅可以对静态资源进行加速,动态资源也可以加速的。那就是CDN的动态加速技术。

一、什么是动态加速技术

以前说CDN的优势是其在网络边缘缓存了用户请求的内容,离用户近,从而保证用户的访问效果;但是动态网页由于是源站动态生成的内容,CDN的边缘节点无法存储用户请求的内容,请求到了边缘节点之后还得回源,传统CDN架构上的优势就没有了。那么cdn动态加速还没有价值?首先让我们看看cdn动态加速技术是怎么样的:

让我们看以下公式:

用户请求耗费的时间=用户和边缘交互的时间+边缘等待的时间;

其中用户和边缘交互的时间,我们可以看做用户向边缘请求一个静态文件的时间,边缘等待时间,是用户请求到了以后,边缘需要向用户发送数据,确没有数据可以发送,等他数据到达的这段时间;CDN动态加速技术的本质主要是要减少第二部分的时间;

首先我们说,通过网络优化和协议优化,我们可以容易的把上面那个公式变成下式:

用户请求耗费的时间=用户和边缘交互的时间+1*RTT(边缘到源站)+源站的反应时间;

让我们忽略掉源站的反应时间,因为他和我们今天讨论的动态加速没有关系,我们可以把它看做一个常量;

Ok,让我们看看,这是怎么做到的,首先让我们看看,不优化的时候是个什么情况,如图1所示,最坏情况下边缘等待的时间 = 建立连接的时间(1*RTT)+发送请求的时间(1*RTT)+数据传输中的等待时间。

IMG_39107

其中通过优化我们可以把建立连接的时间消灭掉,有两种发送可以做到这一点:

1. 通过连接复用,保证每次动态请求到达时,边缘和源之间的通路,连接都已经建立了,它的弊端是在突发情况下很难保证;

2. 通过TCP协议栈的定制,把连接和请求的过程合并起来,这事我们在09年就一直在说,只不过由于种种原因没有做下去,据说google已经做出来了;

除此以外我们还可以把数据传输开始以后的等待时间给去除掉,这里面涉及到了两个技术,一个是动态路由,一个是TCP协议优化;

动态路由:所谓动态路由,指的是利用CDN节点多的优势,把每个节点都看做一个路由,在边缘A和源B之间找到一个最佳路径,也就是说以前是直接从A到B,变成了A-C-D-B;另外还需要强调的是,D-B之间一定是要通过连接建立,而且D-B一定要很近,时延很小,否则的话TCP协议优化就发挥不了作用;通过动态路由技术我们可以在A-B间建立一个更低的RTT和更小的丢包率的通过;

节点间的TCP协议优化:有了动态路由做保证,节点间的TCP协议优化就是很简单的事情了,我们要知道用户的带宽往往是有限的,而节点间的带宽往往是冗余的,我们要做到节点间的发送速率高于边缘到用户是非常容易的,改几行代码就够了;

通过以上一些技术我们就可以把图1精简成图2:

IMG_39107

这还不够,我们能不能把这一个时延也去掉呢,这是部分可能的,这里面涉及到了一下一些技术:

1. 缓存,部分的动态内容也是可以在很短的时间内缓存的;

2. 预取:通过用户请求的页面内容解析,预先感知用户接下来要获取的内容,提前预取;

3. 在边缘生成用户请求的内容,这个水太深,我说不清楚,点到为止;

4. 证书类:通过在边缘部署SSL证书,在边缘将SSL请求,变成普通请求,从而将动态加速变成静态加速,但是如此是有风险的,把CDN运营商看成安全是不安全的;

除了以上一些技术以外,我还漏了一个,那就是压缩,压缩分成两部分,一部分是http头支持的压缩,这些就不要让CDN帮你干了,源站应该自己做的;另一部分是CDN节点间的,如此可以减少CDN节点间传递的数据量,从而变向加快传输速度;但是这里会增加机器的CPU负载,同时,有了TCP协议优化技术,不需要通过压缩来提高传输速度,所以个人认为它不重要。

大家普遍认为动态网站不适合CDN加速,其实不是。动态网站一般是与用户互动,数据要求实时性,比如论坛、搜索引擎、电子商务、股票行情。动态网站加速的基本原理:比如现在3个CDN节点:电信,联通,移动,用户网站放在电信。联通用户访问的时候,会通过昆明电信节点>>中转节点电信>>中转节点联通 由于中转电信和中转联通节点都是一个机房,这样就解决了电信和联通之间的瓶颈问题。

基本的原理如下:通过CDN众多节点找到一条最快的路由,去源站点取数据从而达到对动态网站加速,再配合数据压缩技术,可以将动态网站的访问速度提高10倍甚至100倍。另外,动态网站的页面内容一般是由静态图片和动态文本混合组成,而静态图片将会被缓存到CDN节点的硬盘上,也能提高动态网站的访问速度。

二、百度云设置CDN动态加速

登陆自己的百度云账户,找到CDN菜单,左下角【增值服务】-【动态加速】

IMG_39107

开启CDN动态加速后,【新增动态资源配置】

IMG_39107

配置如上,设置很简单。其中文件类型、请求方式、动态URI、动态路径填写任意一项规则即生效。

等待2-3分钟后,再访问自己的WordPress网站,是不是无论登陆或未登陆状态,动态页面也一样访问超快呢?

目前都是按请求数进行收费,可以购买资源包从而优惠使用。

三、腾讯云CDN动态加速设置

腾讯云的CDN动态加速技术叫的是另外一个名词-ECDN全站加速网络

全站加速网络 ECDN 简介

全站加速网络(Enterprise Content Delivery Network,以下简称 ECDN)为您提供稳定高效的网络加速服务,适用于动静混合、纯动态、跨国、上传等多种加速场景。ECDN 网络资源丰富,同时融合静态缓存、智能路由、协议优化、多路传输、抗抖动等自研技术,加速效果更加显著;接入便捷,功能配置灵活多样,可满足您个性化的业务需求。 

IMG_39107

打开腾讯云控制面板后台后,开启全站加速网络,

在域名管理里面新增域名,然后设置规则即可。简单易用。

IMG_39107
类别:WordPress 进阶教程

本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。

评论 (0)COMMENT