说说 CDN、缓存插件、速度优化这些事儿

2019-07-0802:30:30 12 385
摘要

关于网站速度优化,明月时至今日的建议是能用CDN的尽量使用CDN,缓存插件能不用就不要再用了,保护好自己的服务器才是最重要的,只有你的服务器运行稳定才能保证站点前端有令人满意的载入速度,奉劝新手站长们不要在痴迷于N年前的那些所谓的网站速度优化的文章了,不少实现技术已经落伍和淘汰了!

说起站点速度优化这个话题对于很多老站长来说很有点儿“老生常谈”的感觉了,今天明月就继续针对这个“老生常谈”的话题给大家说道说道!因为明月发现至今为止还是有不少站长们对站点速度优化有不少的误区,加上现在各种技术的更新发展,优化速度这个事儿也要与时俱进的,不能总是抱着老技术、老思想来抱残守缺,玩博客还是要紧跟时代的!

既然是说速度优化这个话题的,那么自然是无法绕过 CDN、缓存插件这些东西的,那么明月就给大家一一讲述一番吧,其中会有明月结合自己多年博客、网站运营经验心得和汇总以及结合当今比较成熟稳定的技术趋势总结整理的速度优化方面的技巧。建议有优化速度需求的博客站长们认真的看完并确定自己理解。

先说说 CDN

首先大家要明白 CDN 是干什么的,不要“人云亦云”以及相信广告宣传,只有深刻、清晰、完整的理解了 CDN 的含义我们才能用好、用对 CDN 这种技术!那么先参考一段百科里对 CDN 的释义:

CDN 的全称是 Content Delivery Network,即内容分发网络。CDN 是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使终端用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN 的关键技术主要有内容存储和分发技术。

从上述这段 CDN 的百科版释义我们可以看出 CDN 这个技术最核心的部分其实就是“分发”了,我们在给站点加速优化的时候追求的无非就是让用户浏览站点时速度越快越好。CDN 的“分发技术”就是实现用户端加速的重要一环,单从分发技术层面来举例说明:CDN 可以实现当一个河南信阳用户访问你服务器位于上海的站点的时候,CDN 会根据这位用户所在位置分发给其位于洛阳(边缘服务器,也可以叫 CDN 节点缓存服务器)上已经缓存源自你位于上海服务器的站点资源,这样的分发对于这位用户来说就实现了访问速度的提升,因为物理层面信阳至洛阳的访问速度当然是要比信阳访问上海的速度快了。这就是 CDN 的分发带来的速度提升,所以一般来说判断一个 CDN 服务好不好,都会从其提供的 CDN 节点服务器(也可以叫边缘服务器,这个更形象感觉)遍布区域越多越好。记住 CDN 是提升用户访问速度的,至于网页的载入速度并不单一取决于 CDN 的,跟服务器运算速度、用户浏览器网页解析速度以及网页代码这些关系更大一些。

CDN 影响用户端网页载入速度的就是上述 CDN 释义里提到的 CDN 另一个关键技术“内容存储”,对于博客站点来说就是你允许 CDN 各个节点服务器获取并存储站点服务器上的资源内容,这点一般都是通过设定 CDN 缓存规则来实现的,很多人使用 CDN 后服务器负载飙升,站点访问速度提升不明显几乎都是 CDN 缓存规则也就是存储到 CDN 节点服务器的内容选择上不对造成的。就明月的经验来看,适合 CDN 存储的资源就是静态资源了(CSS、JS、图片等文件),因为这些静态资源文件一般都是些很少有内容变动的文件,所谓的“静态”指的就是这个意思(可不是有些新手站长们理解的静止图片哦),因为这些静态文件不需要 CDN 频繁的回源站点服务器更新,用户访问时只需要优先分发给用户最近 CDN 节点上存储的即可,这样对服务器端没有请求,对用户端又加快了访问请求完成的速度自然也就实现了速度提升了。

综上所述,明月对待 CDN 技术的态度就是只让其缓存站点纯静态文件资源,凡是涉及到动态生成的一律交给站点服务器,这样的分发和计算其实就是所谓的“动静分离”,特点就是:各司其职、相互配合,互不干扰。只要严格做到这点你的站点 CDN 加速效果就绝对不会差到哪里去!唯一的一个影响结果的就是动态资源和静态资源区分的问题了,可能很多细心的站长们注意到明月在举例静态资源文件的时候没有提到 HTML 文件,这不是疏忽,是因为在 WordPress、Tyoecho 这些动态网站系统里呈现给前端的 HTML 都是“伪静态”实现的,并不是真正意义上那种纯 HTML 了。所以如果你使用的是 WordPress 的话,请记住你看到的 HTML 并不是真正纯静态的 HTML,都是一种“伪装”而已,伪装的目的是为了对搜索引擎更加友好(其实这都是十年前的观点了,现在的搜索引擎早就不再局限于静态文件后缀了,识别动态链接技术 N 年前就实现了已经,WordPress 的链接地址伪静态化心理作用大于实际作用而已)。所以,如果你在 CDN 里缓存了这些实际是动态生成的仅仅伪静态化了链接地址的资源,必然会造成 CDN 节点服务器频繁的回源请求,这就适得其反了,不是加速而是锻炼服务器了!

再说说缓存插件

明月发现几乎大部分站长都会使用缓存插件,明月当初也是很痴迷于缓存插件的,几乎试用过市面上所有的缓存插件。最终明月还是选择不用任何缓存插件,并且建议大家能不用缓存插件就不要用,因为安全隐患真的是很大,并且缓存插件的“加速”效果很有迷惑性的。

网页缓存中毒通过发送能引发有害响应的请求实施,该请求会被保存在缓存中,进而影响其他用户。

新型缓存中毒主要关注利用 HTTP 头之类非用户键入的输入。其他不那么有效的小花招,比如“请求走私”也有成功的可能。

缓存中毒本身不是黑客的最终目的,而是用非键入性输入打开第二阶段漏洞利用(比如跨站脚本攻击(XSS))大门的途径。只要正确操作,网页缓存中毒可创建起一套机制,产生能执行任意 JavaScript 代码的特定响应,通过目标网站的网页缓存,来攻击试图浏览该网站上特定资源的用户。

理论上来说缓存的安全隐患是最大的,并且结合明月给众多站长们排查网站故障的时候碰到出问题最多的就是缓存造成的入侵、恶意代码植入、后门木马植入这些,都是利用缓存实现的,可以说是防不胜防,无论你是缓存插件(如:W3 Total Cache、WP Super Cache、WP-Rocket 等等)、缓存扩展(如:Redis、Memcached 等等)都有很大的风险,除非你的服务器运维能力非常的强悍,至少有发现可疑后台进程并清除的能力,否则奉劝各位少用缓存插件。

那么缓存插件对于站点速度的提升真实有多大的提升呢?明月的实测结果是,效果会有,但是跟 CDN 加速相比几乎人类是无法感知到的,至于说测速网站之类的数据时缺乏科学性的,有些站长会说自己使用了缓存插件后实测速度提升明显,这是怎么回事儿呢?这个明月要说的是仅仅是个“假象”而已,因为缓存后都会生成一个 HTTP 头定义传递给浏览器,浏览器就会对这个站点进行缓存保存到本地,这时候你浏览自然就快了,CDN 实现的跟这个原理基本类似,并且 CDN 也支持开启浏览器缓存。所以相对于 CDN 来说从安全性上考虑,还是优先使用 CDN 为宜。缓存插件因为涉及生成站点缓存的需求就需要有写入权限,这就给恶意代码植入、木马后门的植入提供了一个入口途径,等于说你留给别有用心的黑客一个小后门了。

综上所述,明月建议大家能用 CDN 加速网站,就用 CDN,缓存插件是能少用就尽量不要用了,真心是很不安全的。

最后说说网站速度优化

网站速度优化其实是个很系统的工作,并不是仅仅使用个 CDN 或者缓存插件、缓存扩展后就完成了加速优化了,就明月目前的实践经验来看,这些工作仅仅是个开始而已,服务器层面的加速也是必不可少的一环,像服务器端代码执行效率、服务器带宽拥堵的减缓、站点恶意请求的屏蔽和拦截、数据库缓存的启用、PHP 代码运行缓存等等这些对用户端的载入速度都是有影响的。

最近明月一直在使用 Fail2Ban 过滤并且屏蔽拦截恶意 WordPress 登录请求、404 请求、注入扫描请求的时候就发现这些恶意的请求其实都是些占用服务器出口带宽的“罪魁祸首”,因为每天下来这类请求屏蔽 IP 数量都是几百个之多,这还是明月已经在防火墙里严格限制的结果,可想而知很多小白站长们的服务器每天会有多少这些对于站点毫无意义的恶意请求,如果你发现你的服务器 CPU 负载总是有突然飚高的时候,就意味着你的服务器正在面临这类恶意请求的骚扰。

最后总结

关于网站速度优化,明月时至今日的建议是能用 CDN 的尽量使用 CDN,缓存插件能不用就不要再用了,保护好自己的服务器才是最重要的,只有你的服务器运行稳定才能保证站点前端有令人满意的载入速度,奉劝新手站长们不要在痴迷于 N 年前的那些所谓的网站速度优化的文章了,不少实现技术已经落伍和淘汰了!

历史文章推荐:

  • 本博客公众号
  • 扫一扫关注!
  • weinxin
  • 本博客小程序
  • 微信内浏览本博客
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:12   其中:访客  6   博主  6

    • 红狼吃鸡 0

      我就是想知道文章末尾的二维码和小程序码是怎么添加的?

      • 弥雅 6

        过度优化很可怕的!

          • 明月登楼  博主

            @弥雅 呵呵,是的,特别是“不明觉厉”的优化!

          • 自然 2

            Fail2Ban真心不错,我经常配置修改,偶尔会把自己先墙五分钟

            • boke112导航 9

              其实,站点使用CDN就很给力了,不过还要使用对的CDN,某些CDN确实有可能会拖累站点速度。同时,也要设置对CDN才行。

                • 明月登楼  博主

                  @boke112导航 是的,所以我都建议CDN的话只缓存图片文件,越简单越单一实施起来效果越好!

                • 程平博客 0

                  一直都使用的是腾讯CDN,和七牛的CDN,还不错吧!