本文公众号来源:Rude3Knife  作者:蛮三刀把刀

网站加载优化的过程(主要针对静态资源),思路可以借鉴一下!


前言

接触到CDN的起因:

我自己搭建的网站https://price.monitor4all.cn/网页打开的速度一直比较慢,经查证是我的网站有很多静态js大文件,通过浏览器读取这些js比较耗时间。

最近有了一些空余精力, 好好优化一下加载速度。

分析思路

公用CDN加速公用js库

其实首先想到的是把公共的js库使用公共CDN来加速,比如我的前端用到了echarts,js-cookie等。这些js最开始是放在我自己的服务器上的,我们可以让浏览器直接去读取公共CDN里存放的这些库。

这里使用的是bootcss网站提供的公共CDN,在将这些公共库指向bootcss后,这些js文件加载速度到了100ms以内:

https://cdn.bootcss.com/axios/0.18.0/axios.min.jshttps://cdn.bootcss.com/moment.js/2.22.2/moment.min.js/cdn.bootcss.com/axios/0.18.0/axios.min.jshttps://cdn.bootcss.com/moment.js/2.22.2/moment.min.js


接下来,我们还剩下一些自己的js文件,这些是前端打包后的js,不能用公用CDN来加速。

这里举个例子,下图中的js达到了1.2m,每次在没有缓存的情况下加载这个Js,浏览器都需要5s以上的加载时间,新用户点击我的网站,都需要盯着空白页这么久,十分劝退,很多用户没等到网页渲染完毕就关了。

如下图,极端情况下,会等到15s以上。


这是完全不能接受的。

Nginx启用Gzip

接下来我想到的是将js文件大小压缩,毕竟主要是由于文件过大,才导致的传输缓慢。

nginx作为我的反向代理,负责了我服务器对外的服务,我们可以启用nginx的gzip功能,对静态文件进行压缩,包括图片,js,css等。

参考:

https://blog.csdn.net/bigtree_3721/article/details/79849503

按照上面网页的教程,修改nginx的conf。

gzip on;    gzip_min_length 1k;    gzip_buffers 4 16k;    #gzip_http_version 1.0;    gzip_comp_level 2;    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;    gzip_vary off;    gzip_disable "MSIE [1-6]\.";on;    gzip_min_length 1k;    gzip_buffers 4 16k;    #gzip_http_version 1.0;    gzip_comp_level 2;    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;    gzip_vary off;    gzip_disable "MSIE [1-6]\.";

压缩后,js文件大小减少了很多,这个1.2m的文件,在浏览器端只需要加载500k的压缩js。

然而,我使用的是1m带宽的云服务器,对于500k大小的js,有时候还是需要3-5s时间来加载,我们还需要想办法继续优化。

对象存储OSS

经过一阵查找,我找到了七牛云,七牛云免费提供10G的OSS存储空间,我的想法是将这个js文件上传上去,拿到文件的链接后,写在前端html中,从OSS读取该JS文件,从而达到加速的效果。


然而,由于我全站开启了HTTPs,七牛云的OSS免费额度并不针对HTTPS请求,让我非常头疼,我的宗旨就是不花钱“白嫖”资源(滑稽)。

于是,我找上了自己服务器所在的阿里云。。。

阿里全站CDN加速

阿里云的CDN介绍:

将源站内容分发至最接近用户的节点,使用户可就近取得所需内容,提高用户访问的响应速度和成功率。解决因分布、带宽、服务器性能带来的访问延迟问题,适用于站点加速、点播、直播等场景。

我使用流量计费方式,购买了100G的流量包:


之后可以看到自己的流量包:


在CDN控制台,添加上自己的域名,写上IP,使得加速的域名能够访问你的服务器。


登记好域名后,阿里云提示我们去域名解析的地方添加一个CNAME解析:


阿里云提供了CNAME指向的域名:


我们将我们的A记录(指向服务器的记录)关闭,添加CNAME记录,指向阿里的CDN节点域名:


然后访问我们的网站,结果如图,我又意识到,我没搞HTTPS,所有的请求由于强制走https,所以无法访问了。


所以我们需要在阿里云的控制台对CDN添加https支持,也就需要导入你网站的https证书:

由于我服务器就在阿里云,并且证书也是阿里云开的一年免费https,所以可以一键导入进来。


导入完成后,再次访问网站,在第一次较慢的加载后,重新加载,这次只用了892ms,就加载完毕了该js文件:


至此,新用户访问网站几乎可以在2s内显示出全部内容。

PS:用了CDN后,会在阿里云的边缘节点缓存你的静态文件,所以读取的js文件大小是未压缩前的大小。(这一点我是这么认为的,但并不肯定正确)

其它可行方法:Cloudflare免费CDN

Cloudflare特别适合国外服务器网站的加速,经测试,我的阿里云服务器放在上面,加速效果并不是特别明显。

参考:https://www.wn789.com/15161.html



总结

以上就是我使用的一些优化方法,达到加速网站静态文件加载的目的。

经过这些优化后,网站的加载速度从极端情况下的15s,变成了2s内。

当然,以上只是很小一部分方法,还有很多优化的方式,适合不同体量的网站,和不同的使用场景,这里权当抛砖引玉。

最后

乐于输出干货的Java技术公众号:Java3y。公众号内有200多篇原创技术文章、海量视频资源、精美脑图,不妨来关注一下!

有帮助?在看!转发!

[网站优化实战]公共CDN库/Nginx启用Gzip/全站CDN加速相关推荐

  1. Nginx 启用 gzip 压缩

      Gzip是若干种文件压缩程序的简称,通常指GNU计划的实现,此处的 gzip 代表GNU zip.也经常用来表示 gzip 这种文件格式. 什么是 Gzip ? Gzip是若干种文件压缩程序的简称 ...

  2. 网站优化长尾关键字词库的挖掘与整理

    我们先来认识一下什么是长尾关键字,长尾关键字是核心关键字的包含关键字,和核心关键字对比,长尾关键字往往比较长.数量多.竞争难度低等特点.长尾关键字的相关度非常的高,是精确流量,长尾关键字优化是提升网站 ...

  3. 网站优化,这十个工具你可以看看

    转载自:Jartto's blog http://jartto.wang 工欲善其事,必先利其器.在「网站优化实战:http://jartto.wang/2019/02/16/web-optimiza ...

  4. JavaScript系列—性能优化之《网站性能优化实战——从12.67s到1.06s的故事》

    本篇博文来源于网络 226 人赞同了该文章 原文作者:IMWeb jerryOnlyZRJ  原文链接:网站性能优化实战--从12.67s到1.06s的故事 - 腾讯Web前端 IMWeb 团队社区 ...

  5. Linux实战教学笔记37:企业级Nginx Web服务优化实战(上)

    一,Nginx基本安全优化 1.1 调整参数隐藏Nginx软件版本号信息 一般来说,软件的漏洞都和版本有关,这个很像汽车的缺陷,同一批次的要有问题就都有问题,别的批次可能就都是好的.因此,我们应尽量隐 ...

  6. 常用公共前端CDN库

    静态资源 CDN 公共库是指一些服务商将我们常用的 JavaScript 库存放到网上,方便开发者直接调用,并且还对其提供 CDN 加速,这样一来可以让用户加速访问这些资源,二来还可节约自己服务器的流 ...

  7. 360网站卫士前端公共库已停止服务

    最近有的站长发现打开网站一直停在加载fonts.useso.com中,fonts.useso.com本来是360网站卫士CDN加速的字体服务,但是现在已经停止服务了! 但是谷歌的字体服务已经能使用了, ...

  8. 常用的7个公共CDN库

    常用的7个公共CDN库 # 名称 国内节点 访问速度 说明 1 cdnjs.com 2 www.jsdelivr.com > 3 staticfile.org ✔ >>> 七牛 ...

  9. 【vite+vue3.2 项目性能优化实战】使用vite-plugin-cdn-import进行CDN加速优化项目体积

    CDN(Content Delivery Network)即内容分发网络,是一种通过在全球范围内分布式部署服务器来加速网络内容传输的技术.CDN加速的原理是,当用户请求访问某个资源时,CDN会根据用户 ...

  10. 紧急通知:360 网站卫士前端公共库已停止服务

    所有使用了360前端公共库的开发者和站长们,请及时更换你的前端库的链接(主要是前端库和谷歌 fonts),否则网站打开速度会极慢,甚至会在 Chrome 浏览器中崩溃. 360前端公共库曾经提供的服务 ...

最新文章

  1. Android 常见工具类封装
  2. .java生成dex文件
  3. 得到Raster的一些基本信息(高程值,列数,列数)
  4. BAT 力捧的 AI 项目再次爆发,这些程序员都受影响!
  5. azure虚拟服务器,虚拟机系列
  6. 电子助力方向机控制模块_【技师投稿】使用道通MS908PRO更换宝马F20底盘方向机...
  7. 实现成长之路——SpringBean三:实例化Bean的姿势都有哪些?
  8. Python实现PDF合并工具(含源码)
  9. python 日期运算_Python中关于日期的计算总结
  10. 45. Django 2.1.7 项目技巧 - 创建apps应用目录归纳所有应用
  11. Ubuntu 18.04 无法自动检测耳机解决方法
  12. 张勇卸任淘宝董事长,戴珊接任;苹果称不送充电器已节省55万吨矿石;Windows彻底告别SMB1传输协议|极客头条
  13. 华硕N55SF 折腾记
  14. 【高效开发工具系列】API工具
  15. DB 查询分析器 6.03 在Windows 8 上安装与运行演示
  16. 这4款网页书签管理工具,整理收藏夹更轻松
  17. hydra海德拉 and Medusa美杜莎简单使用教程
  18. SDL2函数简单介绍03
  19. GCC 编译 C(C++)静态链接库(gcc -L、gcc -l)和动态链接库(gcc -fPIC -shared)的创建和使用
  20. 《财报就像一本故事书》读书笔记(未完待续)

热门文章

  1. Allegro 16.6使用说明及技巧
  2. 模糊测试--强制性安全漏洞发掘
  3. CSS-背景 超链接
  4. java计算机毕业设计招聘信息系统源代码+系统+数据库+lw文档
  5. 企业ad域管理教程,有哪些有效的AD域管理办法?
  6. 计算机技能高考带什么文具,高考必备——21条考场抓分细节
  7. 解决Intel Management Engine Interface黄色感叹号
  8. app页面html制作工具,app页面设计制作软件(最好用的6款设计软件)
  9. 梦网短信接入_阅览版
  10. 人机对弈黑白棋游戏用Python tkinter的Canvas实现图形界面