本文针对 SwissDev Jobs 网站的优化实践,介绍我们是如何把网站加载时间减少24% 的。上周,我们有机会对 SwissDev Jobs 网站性能进行了微调。
之所以要提升 SwissDevJobs.ch 网站性能,主要是有两方面原因:
良好的用户体验——即加载时间更短(且互动性更好)和使用时的愉悦感 ;
seo—— 我们的流量严重依赖谷歌搜索,而且你也许知道谷歌比较青睐性能良好的网站(谷歌甚至在搜索控制台中引入了速度报告)。
当搜索“website performance basics”时,你会得到许多操作建议,例如:
针对以上这些建议,我们进行了部分改进。另外,由于我们的主页面基本上是一个可过滤的列表(用 react 编写的),我们引入了react-window 来每次渲染 10 个列表项,而不是 250 个。
所有这些都帮助我们极大地提升了网站性能,但从速度报告来看,我们还可以做得更好。
因此我们开始深挖更多不寻常的方法来让网站变得更快... 现在看来,我们非常成功!下面是这周的报告:
这个报告显示,完整的加载时间减少了 24%!
我们是如何做到这一点的呢?
这条在 index.html 文件中的简单代码向浏览器表明:它应该在这个资源被来自 JavaScript 的 AJAX 或 Fetch 调用实际请求前获取。
当需要获取数据时,它会从浏览器缓存中读取而不是重新获取。这帮助我们减少了大约 0.5s 的加载时间。
我们很早就想实现这一点了,但是过去在 Chrome 浏览器中一直有问题而导致重复下载两次。而现在它可以正常生效了。
在实现了 JSON 预加载后,我们发现职位列表的下载仍然是瓶颈所在(等待 0.8s 从服务器获得响应)。因此,我们决定从服务端缓存入手。
首先,我们尝试了 node-cache,但令人吃惊的是,它并没有优化获取时间。
值得一提的是,/api/jobs 接口是一个简单的 GetAll 接口,因此没有太多的优化空间。
于是,我们决定使用一个 JS 变量来构建自己的简易缓存。它看起来如下:
这里唯一没有显示的是 post /jobs 接口,这个接口删除了所有的缓存(cachedJobs = undefined)。
就这么简单!又减少了 0.4s 的加载时间!
最后动手的是我们加载的 CSS 和 JS 打包文件的大小。我们注意到,非必要的 font-awesome 文件超过 70KB。
同时,我们可能只使用其中 20% 的图标。
如何解决这个问题的呢?我们使用 icomoon.io 来选择使用的图标,然后创建我们瘦身过的图标包。
结果呢?节省了 50KB!
这 3 项不寻常的改动帮助我们将网站的加载时间加速了24%。或者,如其它一些报告显示的,加速了 43%(达到了 1.2s)。
我们对这些改动很满意。但是,我们相信仍然有优化的空间。
如果你有不寻常的技术可以帮助我们——请告知我们!
在应用上述优化之后,我们注意到瓶颈仍然是获取 /api/jobs 接口以及下载初始 HTML 的时间。其原因是,初始 HTML 以及这个 API 是由位于欧洲的一个单点服务器提供的。
我们寻找可行的解决方案,然后决定采用将一切都缓存在服务器层级的方案。
使用 Cloudflare,默认只有静态资源会被缓存。但是,通过增加一个简单的页面规则,就可以启用缓存任何页面或资源的功能:
这使得我们的网站可以直接由 Cloudflare 的 CDN 提供服务,甚至不需要访问服务器。
结果呢?
在世界各地的加载时间减少了 50%!
现在,你可能对缓存初始 HTML 和动态 API 的想法将信将疑,但请考虑:首先,我们的接口不会频繁改动——每天批量添加一次新的职位;其次,我们在改动发生时,在程序中清除了缓存。
这使得我们可以在不到 1 秒的时间内将 SwissDev Jobs 服务到世界各地!
SwissGreg,白天是程序员,晚上是独立黑客——SwissDevJobs.ch。
原文链接:https://hackernoon.com/how-we-improved-our-website-loading-time-by-24percent-with-3-unusual-changes-uv1l361d
作为个人开发者,为自己的辛苦开发的项目配上支付功能,才有盈利的盼头!但是目前大部分都需要企业资质,那对应个人而言如何在网站、应用中接入支付功能呢?这里找了一些不需要企业资质的第三方支付平台。
为了自己网站上文章的质量,我们可以通过一些在线的原创文章相似度在线检测工具,进行检测自己的文章和网上相关文章的相似率!下面就为此整理了一些目网上已有的工具,以供大家参考使用
移动端网站关键词怎么优化?现在人人都要用手机,手机已经成为我们生活中不可或缺的一部分,移动端也越来越重要了,很多企业都开始关注移动端关键词排名,移动端和PC端排名为什么差这么大,移动端关键词优化方法是什么?
对于一个新网站来说,希望短时间内被收录无疑是网站经营者最关注的的问题。那么就让我们了解一下!新网站上传之后,首先在百度搜索上输入你的网站网址,然后主动向百度提交你的网站
GatsbyJS 是一个现代化开发网站的网站产生系统,拥有完整、丰富且开源的生态圈。它利用 React + GraphQL 产生的多页面应用,让前端工程师,编辑,用户都感到满意。就让我们一步步地探索这个系统吧。 GatsbyJS 是一个拥有超过 2万 Stars,3500 forks 的 React 网站生成系统。
一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构、性能的要求都很简单,随着互联网业务的不断丰富,网站相关的技术经过这些年的发展
更新谷歌浏览器之后发现不能通过本地 crx文件安装离线插件了,网上找到的方法有两种 :一个就是通过添加浏览器参数解决 但是这个方法我尝试之后失败了 ,第二个方法就是用工具安装,具体如何太麻烦了就没有用
站制作公司数不胜数,每家公司使用域名、服务器的提供商也是不同,制作网站使用代码语言、模板、自主研发的系统都是各不相同。网站整体的设计要好,这个设计,一是指网站的代码设计,最好采用PHP+MySQL的形式,像目前建站比较流行的Dedecms,Wordpress
很多新手想做一个网站却不知道怎么做,今天呢,我就给有建网站需求的小伙伴们来说一说从建网站的步骤,还有一些常见问题的解决办法。在网络上的主机都有自己唯一的标识也就是你的IP地址,因为IP地址较长,不容易记忆
找视频素材的网站,免费视频素材资源,如何免费下载视频素材? 推荐视频素材哪个网站好:videezy、pexels、splashbase 、footage crate、monzoom、Wedistill、Mazwai
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!