网站访问速度优化实战

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 其实首先想到的是把公共的js库使用公共CDN来加速,比如我的前端用到了echarts,js-cookie等。这些js最开始是放在我自己的服务器上的,我们可以让浏览器直接去读取公共CDN里存放的这些库。这里使用的是bootcss网站提供的公共CDN,在将这些公共库指向bootcss后,这些js文件加载速度到了100ms以内:


前言



接触到CDN的起因:

网页打开的速度一直比较慢,经查证是我的网站有很多静态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.js
https://cdn.bootcss.com/moment.js/2.22.2/moment.min.js

image.png


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

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

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

image.png

这是完全不能接受的。


Nginx启用Gzip

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

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

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]\.";

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

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


对象存储OSS

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

image.png

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

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


阿里全站CDN加速

阿里云的CDN介绍:

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

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

image.png

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

image.png

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

image.png

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

image.png

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

image.png

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

image.png

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

image.png

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

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

image.png

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

image.png

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

PS:用了CDN后,会在阿里云的边缘节点缓存你的静态文件,所以读取的js文件大小是未压缩前的大小。


总结



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

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

相关实践学习
Serverless极速搭建Hexo博客
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
相关文章
|
4月前
|
缓存 前端开发 JavaScript
使用Web前端性能优化提高网站加载效率
前端性能优化关键在于提高用户体验和降低资源消耗,Webpack是重要工具。基础优化策略包括减少HTTP请求、资源压缩与缓存、异步加载。Webpack优化配置涉及Tree Shaking、代码分割。高级策略涵盖Long-term Caching、缓存提升和插件优化。打包部署时,自动化流程和环境管理也至关重要。通过这些方法,可提升Web应用速度和体验。
169 0
|
存储 缓存 NoSQL
短链系统设计性能优化-缓存提速及CDN
如何提高响应速度,和直接打开原链接一样的效率。 明确,这是个读多写少业务。
156 0
|
存储 缓存 前端开发
如何提高网站的性能
网站的性能是影响用户体验和转化率的关键因素之一。本文将介绍一些优化网站性能的方法和技巧,包括减少HTTP请求、使用CDN、压缩和合并文件、使用浏览器缓存和优化图片等。
133 0
|
SQL 弹性计算 缓存
网页性能优化实战之带宽优化处理
最近用户反馈页面加载慢,系统首页刚打开的时候要等上一两分钟才能进入到登录页面,进入到系统之后部分查询的页面加载过慢.问题收到之后就是各种定位,经过一番操作,终于还用户了一个丝滑柔顺的操作体验,下面总结了一下页面性能优化的经验,希望对有同样需求的同学有所启示!
网页性能优化实战之带宽优化处理
|
SQL 监控 前端开发
网页性能优化实战之CPU拉满问题处理
今天测试小哥屁颠屁颠的找过来说查询会员信息这块访问速度很慢,之前没有问题,现在输入信息之后根本就没有反应.要等好好长时间才行.另外点击其他页面都是显示网络连接异常,感觉整个系统都会崩溃了。每次测试找过来都当做是对自己的一次技术提升,尤其是对和业务逻辑关联不高的问题更感兴趣,哈哈!现在把问题分析以及处理过程简单记录一下,希望对有相同线上问题的同学能提供一些解决思路.
网页性能优化实战之CPU拉满问题处理
|
缓存 负载均衡 前端开发
网站关于高并发时候的应该采取一些优化方案
网站关于高并发时候的应该采取一些优化方案
119 0
|
缓存 NoSQL 前端开发
网站访问慢需要优化?看这一篇就够了!
小白优化WordPress网站的快速上手教程
956 0
网站访问慢需要优化?看这一篇就够了!
|
Web App开发 前端开发 JavaScript
18个网站优化技巧
快速的页面加载对提升搜索引擎排名、网站转化率和整体的用户体验是非常重要的。网站页面的加载速度也是衡量网站性能的一个重要因素。 如果网站不是以最好的性能在运行,迟缓的加载会让你在低的排名和搜索流量上花费更大的代价。
1704 0