记一次前端优化

本贴最后更新于 2128 天前,其中的信息可能已经天翻地覆

简直坑死我了,刚接手这个项目没几天,就各种开发任务,好多需求还不是很明白,只能一边开发,一边问别人需求什么的。

都在说,现在的版本首页访问速度太慢,找我做优化~(因为现在组里就我一个前端)

这几天也查了很多资料,看了很多关于优化的一些方案,技术文章。

说一下这个页面的耗时:

正常网络,无缓存的情况下,首页所有的请求完成需要一分钟的时间,简直受不鸟。

然后说一下我的思路:

1.要找到原因,为什么耗时这么多,是请求太多?图片太大?服务器太烂?代码写的太烂?

我去抓了包,整理了所有的请求和时间。为什么慢基本一目了然。

2.这个页面因为图片太多,有 80 多个,我选择了懒加载,图片按需加载。

3.部分接口响应时间太慢,找后台开发人员做接口优化和 sql 查询优化。

4.js,css 合并压缩,这个没什么多说的。

5.还有一个预加载,但我还没试这个。

尝试了这些之后,首屏的加载时间减少到了 8s 左右,虽然比之前的时间减少了不少,但还是没达到要求,所以还是需要改进优化的。

下面是过程中的一些笔记:


#查看首页所有网络请求,分析时间消耗

140 个请求   

34 个 XHR(16 个 ajax 请求)

16 个 js

7 个 css

80 个 img(4.5M/5.6M)

1 个 font

1 个 jsp

1 个 ico

http://..../hotRead/getList?pageNum=1&pageSize=11  9.62s(首页中加载耗时) |4107ms(直接掉接口耗时)

http://..../monthNewBook/getList |3.11s |1355ms

http://..../saleRank/getList?pageNum=1&pageSize=10        5.36s                   2959ms

http://..../popularityRank/getList?pageNum=1&pageSize=10  5.8s                    1399ms

http://..../recommendRank/getList?pageNum=1&pageSize=10   4.11s                   1671ms

http://..../subjectFine/getList?subjectTypeID=0A8192CDC19E4AE8A7421DB252E3F8FD&pageNum=1&pageSize=11   8.65s 5873ms

是否有没用的请求或者无效的资源?

js,css 文件是否有重复请求的?

js.css 能否压缩合并,减少请求个数?

能否使用预加载?

CDN?

使 css,js,font 文件可缓存,ajax 可缓存

css @import 会导致浏览器顺序加载,无法并行加载

样式表放在脚本前面

预加载:

DNS preFetch : <linkrel="dns-prefetch"href="//example.com">

PreContent : linkrel="preconnect"href="http://css-tricks.com"

Prefetch : <linkrel="prefetch"href="image.png">

Subresource : <linkrel="subresource"href="styles.css">

Prerender : <linkrel="prerender"  href="/thenextpage.html"/>

Preload : <linkrel="preload"href="image.png">

部分图片使用 lazyload 技术,部分图片按需加载

···

最后保证首屏加载速度

  • 前端

    前端技术一般分为前端设计和前端开发,前端设计可以理解为网站的视觉设计,前端开发则是网站的前台代码实现,包括 HTML、CSS 以及 JavaScript 等。

    245 引用 • 1338 回帖
  • 优化

    不成熟的优化是万恶之源。

    过度优化实则是劣化。

    32 引用 • 173 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
maixiaojie
如果哪天你累了告诉我 我背你。❤️

推荐标签 标签

  • 叶归
    5 引用 • 16 回帖 • 8 关注
  • OpenCV
    15 引用 • 36 回帖 • 1 关注
  • WebClipper

    Web Clipper 是一款浏览器剪藏扩展,它可以帮助你把网页内容剪藏到本地。

    3 引用 • 9 回帖 • 6 关注
  • 大疆创新

    深圳市大疆创新科技有限公司(DJI-Innovations,简称 DJI),成立于 2006 年,是全球领先的无人飞行器控制系统及无人机解决方案的研发和生产商,客户遍布全球 100 多个国家。通过持续的创新,大疆致力于为无人机工业、行业用户以及专业航拍应用提供性能最强、体验最佳的革命性智能飞控产品和解决方案。

    2 引用 • 14 回帖 • 1 关注
  • flomo

    flomo 是新一代 「卡片笔记」 ,专注在碎片化时代,促进你的记录,帮你积累更多知识资产。

    6 引用 • 140 回帖
  • 面试

    面试造航母,上班拧螺丝。多面试,少加班。

    325 引用 • 1395 回帖
  • 设计模式

    设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

    200 引用 • 120 回帖
  • FreeMarker

    FreeMarker 是一款好用且功能强大的 Java 模版引擎。

    23 引用 • 20 回帖 • 458 关注
  • Sillot

    Insights(注意当前设置 master 为默认分支)

    汐洛彖夲肜矩阵(Sillot T☳Converbenk Matrix),致力于服务智慧新彖乄,具有彖乄驱动、极致优雅、开发者友好的特点。其中汐洛绞架(Sillot-Gibbet)基于自思源笔记(siyuan-note),前身是思源笔记汐洛版(更早是思源笔记汐洛分支),是智慧新录乄终端(多端融合,移动端优先)。

    主仓库地址:Hi-Windom/Sillot

    文档地址:sillot.db.sc.cn

    注意事项:

    1. ⚠️ 汐洛仍在早期开发阶段,尚不稳定
    2. ⚠️ 汐洛并非面向普通用户设计,使用前请了解风险
    3. ⚠️ 汐洛绞架基于思源笔记,开发者尽最大努力与思源笔记保持兼容,但无法实现 100% 兼容
    29 引用 • 25 回帖 • 105 关注
  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    315 引用 • 547 回帖 • 1 关注
  • gRpc
    11 引用 • 9 回帖 • 90 关注
  • 开源中国

    开源中国是目前中国最大的开源技术社区。传播开源的理念,推广开源项目,为 IT 开发者提供了一个发现、使用、并交流开源技术的平台。目前开源中国社区已收录超过两万款开源软件。

    7 引用 • 86 回帖
  • Oracle

    Oracle(甲骨文)公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989 年正式进入中国市场。2013 年,甲骨文已超越 IBM,成为继 Microsoft 后全球第二大软件公司。

    107 引用 • 127 回帖 • 359 关注
  • FlowUs

    FlowUs.息流 个人及团队的新一代生产力工具。

    让复杂的信息管理更轻松、自由、充满创意。

    1 引用
  • 前端

    前端技术一般分为前端设计和前端开发,前端设计可以理解为网站的视觉设计,前端开发则是网站的前台代码实现,包括 HTML、CSS 以及 JavaScript 等。

    245 引用 • 1338 回帖
  • Electron

    Electron 基于 Chromium 和 Node.js,让你可以使用 HTML、CSS 和 JavaScript 构建应用。它是一个由 GitHub 及众多贡献者组成的活跃社区共同维护的开源项目,兼容 Mac、Windows 和 Linux,它构建的应用可在这三个操作系统上面运行。

    15 引用 • 136 回帖 • 6 关注
  • Vim

    Vim 是类 UNIX 系统文本编辑器 Vi 的加强版本,加入了更多特性来帮助编辑源代码。Vim 的部分增强功能包括文件比较(vimdiff)、语法高亮、全面的帮助系统、本地脚本(Vimscript)和便于选择的可视化模式。

    29 引用 • 66 回帖
  • Anytype
    3 引用 • 31 回帖 • 11 关注
  • AWS
    11 引用 • 28 回帖 • 11 关注
  • 国际化

    i18n(其来源是英文单词 internationalization 的首末字符 i 和 n,18 为中间的字符数)是“国际化”的简称。对程序来说,国际化是指在不修改代码的情况下,能根据不同语言及地区显示相应的界面。

    8 引用 • 26 回帖
  • OAuth

    OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 oAuth 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此 oAuth 是安全的。oAuth 是 Open Authorization 的简写。

    36 引用 • 103 回帖 • 27 关注
  • WiFiDog

    WiFiDog 是一套开源的无线热点认证管理工具,主要功能包括:位置相关的内容递送;用户认证和授权;集中式网络监控。

    1 引用 • 7 回帖 • 608 关注
  • Outlook
    1 引用 • 5 回帖
  • Gitea

    Gitea 是一个开源社区驱动的轻量级代码托管解决方案,后端采用 Go 编写,采用 MIT 许可证。

    5 引用 • 16 回帖
  • 安装

    你若安好,便是晴天。

    132 引用 • 1184 回帖
  • RYMCU

    RYMCU 致力于打造一个即严谨又活泼、专业又不失有趣,为数百万人服务的开源嵌入式知识学习交流平台。

    4 引用 • 6 回帖 • 53 关注
  • PostgreSQL

    PostgreSQL 是一款功能强大的企业级数据库系统,在 BSD 开源许可证下发布。

    22 引用 • 22 回帖 • 2 关注