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

推荐订阅源

N
Netflix TechBlog - Medium
V
Vulnerabilities – Threatpost
Google Online Security Blog
Google Online Security Blog
Hugging Face - Blog
Hugging Face - Blog
L
LINUX DO - 热门话题
云风的 BLOG
云风的 BLOG
P
Proofpoint News Feed
D
Docker
C
Cyber Attacks, Cyber Crime and Cyber Security
MyScale Blog
MyScale Blog
P
Palo Alto Networks Blog
T
Tenable Blog
P
Privacy International News Feed
Google DeepMind News
Google DeepMind News
小众软件
小众软件
Cisco Talos Blog
Cisco Talos Blog
aimingoo的专栏
aimingoo的专栏
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
A
Arctic Wolf
C
Cybersecurity and Infrastructure Security Agency CISA
C
Cisco Blogs
T
Threat Research - Cisco Blogs
NISL@THU
NISL@THU
The Hacker News
The Hacker News
Project Zero
Project Zero
AWS News Blog
AWS News Blog
Simon Willison's Weblog
Simon Willison's Weblog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
T
Threatpost
V
Visual Studio Blog
The GitHub Blog
The GitHub Blog
The Cloudflare Blog
Last Week in AI
Last Week in AI
Jina AI
Jina AI
Cyberwarzone
Cyberwarzone
The Register - Security
The Register - Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
Vercel News
Vercel News
D
Darknet – Hacking Tools, Hacker News & Cyber Security
MongoDB | Blog
MongoDB | Blog
U
Unit 42
Scott Helme
Scott Helme
A
About on SuperTechFans
WordPress大学
WordPress大学
F
Fortinet All Blogs
大猫的无限游戏
大猫的无限游戏
G
GRAHAM CLULEY
Latest news
Latest news
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
S
Schneier on Security

博客 | 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
标签: 技术