惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

I
InfoQ
F
Full Disclosure
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
T
Threatpost
AWS News Blog
AWS News Blog
The GitHub Blog
The GitHub Blog
G
GRAHAM CLULEY
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
P
Palo Alto Networks Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
Latest news
Latest news
S
SegmentFault 最新的问题
C
Cisco Blogs
T
Tenable Blog
爱范儿
爱范儿
H
Hackread – Cybersecurity News, Data Breaches, AI and More
S
Securelist
S
Schneier on Security
博客园 - 三生石上(FineUI控件)
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Microsoft Azure Blog
Microsoft Azure Blog
C
CERT Recently Published Vulnerability Notes
NISL@THU
NISL@THU
T
Threat Research - Cisco Blogs
IT之家
IT之家
博客园_首页
C
Cyber Attacks, Cyber Crime and Cyber Security
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
K
Kaspersky official blog
aimingoo的专栏
aimingoo的专栏
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
P
Privacy International News Feed
腾讯CDC
A
About on SuperTechFans
Y
Y Combinator Blog
月光博客
月光博客
C
Check Point Blog
Last Week in AI
Last Week in AI
Know Your Adversary
Know Your Adversary
Hugging Face - Blog
Hugging Face - Blog
U
Unit 42
WordPress大学
WordPress大学
T
The Exploit Database - CXSecurity.com
H
Hacker News: Front Page
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
V
Vulnerabilities – Threatpost
Cyberwarzone
Cyberwarzone
L
LINUX DO - 热门话题
MongoDB | Blog
MongoDB | Blog
T
Troy Hunt's Blog

博客 | dsy4567 的小站

2024 年总结——我在地址栏输入 A-Z,浏览器会补全哪些域名? | 博客 | dsy4567 的小站 用 Vercel + DevSidecar 实现科学上网 | 博客 | dsy4567 的小站 记一次在 Termux 上搭建 code-server 环境 | 博客 | dsy4567 的小站 使用 CloudFlare Workers 免费搭建 Virtual Judge 反代 | 博客 | dsy4567 的小站 使用 Cloudflare Workers 获取别人的 IP 地址 | 博客 | dsy4567 的小站 P1932 题解 | 博客 | dsy4567 的小站 (转) CCF NOI 历年处罚公告 | 博客 | dsy4567 的小站 (水文)2022 €€£ €$₽ J 组第二轮游寄 | 博客 | dsy4567 的小站
如何优化网站加载速度 | 博客 | dsy4567 的小站
2023-06-24 · via 博客 | dsy4567 的小站

如何优化网站加载速度

中考完了之后,闲的没事的我拿 LightHouse 测了一下自己的网站,发现分数有点低。为了拿到四个圆圈圈以满足我的虚荣心,我决定花些力气来优化网站性能。

废话不多说,先把图放上来。

优化前:

优化前

优化后:

优化后

为什么优化网站加载速度很重要

像我这种有点耐心(还不是被某堵墙和我这老爷机逼的)的人,逛加载速度慢网站通常会一边忍着一边想带妈的词语。而一些没耐心的人进了这种网站,肯定会想这™什么破网站,然后立马点叉。对于用户很多的电商平台来说,网站加载时间每多 100ms,用户越没有耐心看下去,然后电商平台就要少赚好几沓钞票。

少说废话,进入正题

多用 getElement(s)ByXxx,少用 querySelector(All)

用一段代码比较 getElement(s)ByXxx 和 querySelector(All) 的性能

由图可知,二者的速度差距挺大的。虽然 querySelector(All) 用起来又舒服又方便,但它是真的慢。平时写代码的时候,我们应该权衡方便和性能,最好只在 getElement(s)ByXxx 满足不了要求时才用 querySelector(All)

善用预加载

如果你的网页有可能会晚些加载的资源(比如动态加载脚本、CSS 里的背景图片),可以在<head> 里添加 <link rel="preload"/><link rel="dns-prefetch">,声明稍后可能会加载的资源,举个栗子:

<!DOCTYPE html>
<html lang="zh-CN">
    <head>
        <!-- ... -->

        <link rel="dns-prefetch" href="https://api.github.com" />
        <link rel="dns-prefetch" href="https://www.googletagmanager.com" />

        <link rel="preload" href="/js/ncm.js" as="script" crossorigin="anonymous" />
        <link rel="preload" href="/json/icon.json" as="fetch" crossorigin="anonymous" />
        <link rel="preload" href="/json/theme.json" as="fetch" crossorigin="anonymous" />
    </head>
    <!-- ... -->
</html>

具体用法可以看看这篇 MDN 文档(英语)

<script> 标签添加 asyncdefer 属性

如果脚本不需要尽快执行,添加这两个属性可以让浏览器尽快渲染网页,而不必等待脚本执行完毕。

需要注意的是,添加 async 属性后,DOMContentLoaded 事件可能无法触发。

更多做法

这些做法我就不细说了

  • 推迟加载不太重要的资源
  • 压缩资源(这个我不想搞)
  • 少用小站长提供的接口,说不定哪一天就变慢或者崩掉了,建议自行搭建
  • 少用费资源的 CSS 方法(比如 blur()

如无特别说明,本作品采用CC BY-NC-SA 4.0进行许可。
发表于: 2023/6/24 15:38:27, 更新于: 2023/6/24 15:38:27
标签: 技术