抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

闲着没事分析了一下博客的留言,在四万多条留言里,其中有超过一百条说杜老师博客访问速度喜人,想了解下如何做的。今天为小伙伴们分享一下杜老师说的架构,以及优化建议~

数据分布

当您访问杜老师说,正在阅读一篇图文搭配教程,并准备留言时。您正在访问如下四个资源库:

资源解释

网站源码。杜老师使用 Hexo 静态框架,这意味着该网站的所有页面都是预先生成的静态 HTML 文件,而不是动态生成的。访问该网站时,直接获取这些静态网页资源,而不需要再查询数据库。这种做法可以极大减少响应延迟,从而提高网站的加载速度和性能:

图片外链。大量图片托管与去不图床同节点服务器中,方便管理同时,通过自建 CDN 节点加速了访问速度,同时避免与源码站同服务器导致抢占带宽。之所以与去不图床外链地址不同,是因为加入了 WebP 自动转换中间件,节约流量同时,提升加载速度,等同变相增加线路带宽:

评论系统。采用 Artalk 评论系统 Docker 部署方式,其使用 Go 语言构建后端,快速处理数据同时,还使用异步处理的方式,加速评论提交过程。同时采用 Redis 预缓存,Artalk 启动后直接将数据缓存至内存,无需再查询数据库,可以极大减少响应延迟:

开源镜像。全站的 JS 及部分 CSS 资源均引用开源镜像站,感谢 Zkeq 童靴提供公益 CDN 加速平台,既稳定又高速。同时号召小伙伴们不要滥用公益资源,细水长流才能长长久久,境内可用的公益资源越来越少了,希望该平台可长久运营:

优化建议

  1. 主机选择。境外主机的平均带宽比境内的主机高,但境外主机延迟都不低,且数据中心的距离越远,则丢包率越高。故在不考虑带宽情况下,尽量选择境内主机,唯一的限制就是备案了,这是一个硬性门槛,各位站长酌情考量;

  2. 程序选择。静态的肯定比动态的框架快,但有些小伙伴偏爱 WordPress/Typecho 这类的框架,可以安装静态生成插件,进而减少数据库的查询次数,变相减少响应延迟。还要注意的是,不要安装太多插件,因为每次加载页面都会遍历所有插件,插件越多遍历时间越久;

  3. 服务优化。经调查小伙伴们用的云主机普遍配置较低,建议选择 Nginx 作引擎,可以的话推荐使用编译安装最新版本,这个杜老师做过测试的,编译的更稳定且效率高。MySQL 最好 5.7 版本,8.0+适用分布式,性能提升是通过牺牲配置实现的,主机 6G 以下的无法发挥 8.0+版本的性能优势。PHP 肯定是版本越高越好,但需要程序支持才可以。主机内存充足的情况下可以通过 Redis/Memcached 缓存减少数据库查询次数「优先选 Redis」

  4. 站外调用。条件允许的情况下,尽可能的调用站外资源,如 JS/CSS,减少服务器请求数量的同时,还可以避免与网站同服务器导致抢占带宽。墙裂推荐杜老师的去不图床,各大动态博客框架都有对应插件,方便上传管理,自建 CDN 保障稳定及速度。头一次在文章里挂广告推自己的图床,还有一点脸红~

文章推荐

优化云主机的性能确实是一个重要的考虑因素,尤其是在托管大量图片和资源时。很多小伙伴喜欢用某塔面板,很久前杜老师写了一篇《云主机的极致优化》感兴趣的可以看下。虽然文章比较久远,但依旧有参考价值。

只有榨干云主机的性能,才能将性能最大化。关于安装所需的软件和服务,确实需要注意不要过度配置。每个额外的服务或应用程序都可能增加服务器的负担并可能导致性能下降。因此,仔细评估每个应用程序的必要性和其对系统资源影响是很重要的。

比如去不图床安装了 WAF,则每次访问时,先通过 WAF 过滤,才会进行请求处理,经测试会产生 100 毫秒左右的延迟。这是一个值得注意的点,尤其是对于高流量的网站或对性能要求较高的应用。虽然 WAF 可提供安全保护,但这种延迟可能对用户体验产生影响。

如果您感觉杜老师说访问速度不快,那就当杜老师上面的都没说~

评论