关于 WordPress 博客 CDN 加速的那些基本原理
一、网站怎么加速?
一般用户提问都是这样直接提出的,他们一开始想要的也是这个,这个问题很大,很难回答得很具体,那么今天从简单的开始,一步一步引入。
简单来说,网站加速分成两大步:动态内容优化,静态资源加速。
WordPress 博客页面的生成,首先加载 WordPress 程序,然后加载插件和主题,最后根据请求从数据库中取出数据渲染网页,当然这也是一般 PHP 脚本渲染网页的过程。
所以动态内容优化,首先要优化服务器,安装 OPCache 和 Memcached,然后优化 WordPress。
OPCache 把经过编译后的 PHP 代码缓存到内存中,在用户访问的时候就能直接调用从而起到高效的加速作用。
Memcached 会把 WordPress 的数据库查询结果存到内存里面,下次使用会直接到 Memcached 中取,这样数据库查询将会减少,甚至可以做到 0 SQL,所以可以显著的提高页面生成的速度。
优化 WordPress,我做的 WPJAM Basic 插件已经集成了绝大部分的优化选项,这里就不再说明。
WordPress 生成页面之后,页面里面有图片, CSS, JS 这些静态文件,这些静态资源如果加载比较慢的话,用户访问你的网站感觉也是会慢的,所以我们要对图片, CSS, JS 这些静态资源进行加速。
二、如何对静态资源加速?
前面讲到网站加速分成动态内容优化和静态资源加速这两个步骤,动态内容加速需要服务器需要 ROOT 权限,很多虚拟主机用户就放弃了,并且需要配置优化服务器,很多人又进入了知识盲区,望而却步了。
那么静态资源加速这块是比较简单的,只要相信自己,并且用心且认真看完本文就能够顺利操作的。
静态资源加速的意思就是让用户能够快速访问博客里面的图片, CSS 和 JS 这些文件。
那么反过来说:是什么阻止了用户快速访问图片, CSS 和 JS 这些静态资源文件呢?
服务器带宽不够,网页中的图片很大,或者访问量一大,这些资源加载就被限制了,当然可以升级服务器带宽,不过这是很贵的。
服务器并发不大,虽然服务器处理静态资源需要 CPU 是远远比不上动态内容的,但是如果一个网页有几十张图片,那么一个用户的访问,相当于服务器有几十个并发,那么访问量一大就会卡死。
所以静态资源的加速其实就是使用 CDN 来加速。这里就引出第一个问题:
CDN 是什么?
百科一下告诉我们:
CDN(Content Delivery Network)是指内容分发网络,采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求。
那么高级的东西,肯定是我们自己干不了的,所以我们就要使用第三方服务,比如阿里云和腾讯云的 CDN 服务。
所以使用 CDN 加速静态资源的意思就:使用阿里云或者腾讯云等这些第三方 CDN 服务加速图片, CSS 和 JS 这些静态资源文件。
那么就引出第二个问题:
怎么使用第三方的 CDN 服务?
直接使用,比如直接申请阿里云的 CDN 服务(点击阅读原文申请),按照指引解析域名的 CNAME 即可。
但是这样做有个不好的地方,因为他是全站 CDN 服务,不管动态内容还是静态资源都做了 CDN 服务,而你的动态内容是 PHP 实时生成的,不建议进行 CDN 加速,另外图片等资源还存在回源等问题和无法使用缩图。
所以我们一般建议先将静态资源镜像到第三方的云存储服务,比如阿里云的 OSS 和腾讯云的 COS,然后再使用第三方 CDN 对静态资源加速。
三、如何使用第三方云存储和CDN服务?
看到这里,很多人就开始有些困惑了,为什么简单的一个静态资源的事情要做得那么复杂?
因为我们只是写博客的,所以我们只要写博客做内容这件事情做好就好,其他专业的事情交给专业的第三方干。
所以有什么使用云存储有什么好处?
- 可以实时对图片裁图,我们无需 WordPress 的裁图功能,而且可以在不同的页面实现不同的缩略图大小。
- CDN的回源操作是针对云存储,只要我们静态资源镜像到云存储之后,我们本地都可以不再存储这些资源。
下面我们使用七牛云为例,讲解一下如何使用第三方云存储和CDN服务?