马拉松网站源码-简单介绍天猫促销页面性能监控及优化实践

作者: 森罗

转发链接:

前言

作为前端工程师,更高的性能和更流畅的体验是长期追求的目标。 作为大促的中心,会场页面的表现直接影响亿万消费者的点餐体验。 上一篇文章《浅谈618大促背后的淘宝前端技术体系》,那么去年的淘宝618我们是如何让消费者放心地在各个场所购物、选购的呢?

本文将简单介绍一下去年的618,我们是如何通过缓存优化、请求优化等解决方案应对性能挑战,以及如何通过监控和测试来保证大规模会场页面的性能。

变化与挑战

今年618大促,在终端渲染解决方案方面,淘宝营销团队与终端架构团队深度合作马拉松网站源码,首次在场内大规模落地PHA(Progressive Hybrid App)解决方案,并使用了主会场的网络解决方案。 这一变化给页面的资源加载和执行时间带来了挑战。 在商业玩法方面,今年的场馆增加了内容和本地化。 短视频和明星直播在H5页面同层播放,这对页面的视频内存使用提出了一定的要求。

说到挑战,首先,大促期间新用户、低端手机、弱网等占比明显下降,带来了较大的降级长尾影响。 其次,天猫、淘宝的员工在618期间创建了大量场地页面。 如何在大规模体量下保持高性能水位,也对支撑业务的测量监控解决方案提出了一定的要求。

节目解读

在性能优化实施过程中,我们根据会场页面后端时序,将会场的性能优化分为资源加载、数据请求、模块渲染等环节(如下图所示)。

目前场馆使用的渲染方案是页面、模块、数据分离的异步方案。 从资源请求来看,可以分为三部分:一是HTML文档(不同页面之间相同),二是基础JS包括rax、loader、render等(不同页面之间相同)马拉松网站源码,第三个是页面使用的各个UI模块的JS+CSS资源(各个页面不同)。 数据请求统一由页面渲染发起,在数据段层组装返回当前页面不同模块的商品列表、店铺信息等数据。

结合上述变化和挑战以及线上实际演出情况,今年618场馆的演出保障方案主要可以概括为上图中的三个环节。 下面简单介绍一下各个环节的策略和实施。

资源请求优化页面预缓存

在手机天猫、天猫等应用中,我们利用设备提供的静态资源缓存方案,将HTML、基础JS等资源推送到客户端。 当客户端的webview请求资源时,端侧可以根据域名匹配下发的缓存包,匹配成功后直接从本地缓存中读取对应的HTML和JS资源,无需每次都请求网络,大大减少了页面初始化时间。 比如主会场的html加载时间在推送缓存后平均可以减少70+%,命中率可以达到97%。

模块资源缓存

模块JS+CSS资源,因为不同的页面使用不同的模块(例如女装会场、主场会场),总共有上百个模块,所以不可能提前缓存全量。 这里我们采用获取流量顶部页面的方式,只缓存和下发与首屏相关的核心模块,更好的减少了模块请求的时长。

模块按需加载

除了刚才提到的模块缓存分配之外,今年的618会场还采用了“按需加载模块”的优化方式,尽量减少当前页面的模块数量,这对于JS资源请求和数据请求在第一时间很有用屏幕。 某些削减。 实现方案上,首先读取数据网段层服务器缓存的目标投放条件,判断当前访问的URL参数和客户端信息是否满足模块的显示条件(例如搜索盒子模块只在手机淘宝里面才显示)。 如果不满足条件,则直接从页面中删除该模块。 例如,在外部浏览器中打开618酷数字会场时,页面加载的JS资源大小可以减少40+%。

数据请求优化

为了向消费者推荐最贴心、最好的东西,现在的各大促销场所都使用来自数百人、数千张面孔的更加个性化的算法推荐数据。 但推荐带来的算法时间减少,使得数据请求成为当前场馆表现的最长板。 如果当前场地的数据请求时长也能增加,那么首屏时间也会大幅减少。

因此,在去年的618会场,我们落地了一套基于在线实时埋点的请求优化方案,通过更精简的首屏模块数量,实现了首屏界面时长的直接优化。

规划中通过采样上报获取模块高度,结合设备信息、页面模块排序、个性化数据等条件,个性化控制每次访问加载的首屏模块数量。 例如,小明参观数字会场时只需要加载5个模块,而小强只需要加载4个模块。 以在线RT场景为例,对于单个会场,该方案可平均减少首屏时长100+ms。

监控检查

此次618采用了两套巡检机制来保证场馆的性能。 第一组是模块级检查。 通过与H5自动化测试平台等对接,批量对所有大促模块进行性能实测,发现部分模块参考图片未压缩、资源域名未融合等问题。

第二组是页面级检查。 师弟完成场地页面的配置后,手动批量批量检查了全部618个场地,导致页面加载、数据请求、模块渲染等相关性能问题。 可以在上线前发现并修补。

表现监测方面,与双十一整体保持一致。 今年,618采用了一套接近FMP的性能指标,以自定义采集和报告的形式,联动后端监控平台,实现分钟级的性能仪表板,帮助我们更快地发现线上性能问题,并有针对性地做出调整。

降级策略

同层播放组件的引入对会场页面的内存使用提出了更高的要求,特别是对于低端电脑和老系统。 针对这一问题,今年的618大会统一接入客户端提供的降级平台,可以直接根据机型、系统版本、客户端版本等条件动态实施降级策略。 例如可以设置手机淘宝版本≤9.5.0+iOS版本≤10时不播放商品短视频。

今年618会场,整体在线稳定性良好,没有出现因会场显存占用率低而导致客户端崩溃的情况。

总体回顾

绩效优化,工作在平常,成功在大提升。 在去年的618大促中,通过上述的优化方案和保障手段,最终达到了预期的体验目标。

但在这个过程中,我也发现了一些可以进一步探索的性能优化点。 比如可以结合终端智能等客户端能力,帮助大促主会场提前完成页面数据、预加载依赖资源,甚至预渲染页面。 我们会在之前的大促销中不断迭代优化,为消费者提供更好的购物体验,而不是最好的。

总结

618,这场持续20多天的年中大促,对于亿万消费者来说是一场狂欢盛宴,但对于所有默默支持这场大促的工程师来说,它更像是一场极客马拉松,充满了痛苦和喜悦。

马拉松网站源码_源码交易网站源码_源码网站源码

推荐JavaScript学习相关文章

《利用Canvas实现一款“带源码”的在线授权游戏》

《基于Canvas的高斯模糊(上)《JS篇》》

《基于Canvas的高斯模糊(下)《JS篇》》

《由浅入深,66个JavaScript笔试知识点(一)》

《由浅入深,66个JavaScript笔试知识点(二)》

《由浅入深,66个JavaScript笔试知识点(三)》

《由浅入深,66个JavaScript笔试知识点(4)》

《由浅入深,66个JavaScript笔试知识点(5)》

《由浅入深,66个JavaScript笔试知识点(6)》

《由浅入深,66个JavaScript笔试知识点(7)》

“为什么setTimeout的延迟最小为4ms?”

如何处理 Node.js 中未捕获的异常? ”

《Angular v10.0.0 正式发布,不再支持 IE9/10》

《基于Docker的SSR持续开发与集成环境实践》

《谈谈图文Webpack指南》

《一篇文章带你吃透NPM《进阶篇》知识点》

《详谈webpack性能优化》

JS实现的各种日期操作方法总结

《实践》总结浅谈后端性能优化

《在浏览器中实践》画中画(Picture-in-Picture)模式及其API》

《多图》文章带你彻底了解Web Workers(上)

《多图》文章带你彻底了解Web Workers(中)》

《深入聊后端下载总结“干货”》

《西瓜播放器功能分析(上)《实践》》

《西瓜播放器功能分析(下)《实践》》

《浅谈50道JavaScript基础面试题“附答案”》

《Webpack4主流程源码讲解及简单webpack的动手实现(上)》

《Webpack4主流程源码讲解及简单webpack的动手实现(第2部分)》

《详谈后端架构师的愿景》

《先讲应用场景再讲聚焦与节流《进阶篇》》

《前端埋点统一接入解决方案实践》

《浅谈微内核架构在后端的应用“干货”》

《一个高性能的树组件实现方案“干货”》

“攻击 JAMStack”

《前端全部用JS开发是怎样的体验(Hybrid + Egg.js经验分享)》

《全前端开发、前端用JS开发是怎样的体验(Hybrid + Egg.js经验分享)》

《前端全部用JS开发是怎样的体验(Hybrid + Egg.js经验分享)》

《一篇文章带你了解babel-plugin-import插件(上)《源码解析》》

源码网站源码_马拉松网站源码_源码交易网站源码

《本文带你了解babel-plugin-import插件(下)《源码分析》》

《JavaScript常用API合集汇总《值得收藏》》

《推荐10个常用图片处理帮手(上)《值得收藏》》

《推荐10个常用图片处理帮手(下)《值得收藏》》

JavaScript 中 ES6 代理的实际用例

《12种实用后端开发方法总结》

《一篇文章带你了解如何搭建企业级npm私有仓库》

《教你如何利用内联框架元素IFrames的沙箱属性来增强安全性?》 ”

《详解前端开发UI公共组件的新理解“实践”》

《详解DOM API中append和appendChild的三个区别》

《精品淘宝的小鳄鱼谈后端新人如何成为王者的“干货”》

《一篇文章带你彻底解决后台跟踪弹出滚动问题的“干货”》

《推荐5款常用的代码对比工具“值得收藏”》

《Node.js实现文字与图片结合的方法》

《爱奇艺云编辑网页版技术实现》

“我从来不敢说我会写后端Button组件‘练习’”

《NodeX组件——滴滴集团Node.js生态组件体系“实践”》

节点缓冲区完整手册

《推荐18个精美的webpack插件“干货”》

《前端开发需要了解7种常用的JavaScript设计模式》

《浅谈浏览器架构、单线程js、事件循环、消息队列、宏任务和微任务》

《伟大的Webpack HMR学习手册(第1部分)《包含源码讲解》》

《伟大的Webpack HMR学习手册(第二部分)《包含源码讲解》》

《打开我新世界之门的 10 个 WebAPI(第 1 部分)“实践”》

《10个WebAPI(中)打开我新世界之门的实践》

“打开我新世界之门的 10 个 WebAPI(第 2 部分)“实践””

《图解》ESLint在中小型团队中的应用实践

“Deno 是一个代码浏览器,你同意吗?”

“除了localStorage之外,前端存储还有什么?” ”

《Javascript多线程编程的前世今生》

《微前端解决方案乾坤(实践与总结)》

“图文”V8垃圾回收原来这么简单? ”

《Webpack 5 模块联盟引发微后端革命?》

《基于Web的人脸识别身份验证实践》

《《高级前端》10万条数据高性能渲染(时间切片)》

《《前端进阶》10万条数据高性能渲染(虚拟列表)》

《图解承诺履行原理(一):​​基本履行》

《图解Promise实现原理(二):Promise链式调用》

《图解Promise实现原理(三):Promise原型实现》

《图解Promise实现原理(四):Promise静态实现》

《实践教你从头开始构建后端Lint工作流程“干货”》

《高性能多级多选级联组件开发“JS”》

“用简单的术语解释 Node.js CLI 工具的最佳实践”

延迟加载图片提高网站性能的五种方法“实践”

《比较JavaScript对象的四种形式《练习》》

《使用 Service Worker 让你的 Web 应用变得更加强大(第 1 部分)《干货》》

《使用 Service Worker 让你的 Web 应用变得更加强大(中)《干货》》

《使用 Service Worker 让你的 Web 应用变得更加强大(第 2 部分)《干货》》

《前端如何一次性处理10万条数据《进阶篇》》

《推荐三个常规可视化工具《JS篇》》

“如何让用户选择是否离开当前页面?” 《JS篇》

“JavaScript 开发人员更喜欢 Deno 的五个原因”

“仅用 18 行 JavaScript 实现倒计时器”

《JavaScript运行机制详解》

《一个轻量级的JavaScript全文搜索库,轻松实现站内离线搜索》

《推荐15款Web程序员常用的源代码编辑器》

《10个“值得收藏”的实用JS方法》

《详解269个JavaScript小函数,让你免于通宵加班(一)《值得收藏》

《详解269个JavaScript小函数,让你免于通宵加班(二)《值得收藏》

《品味269个JavaScript小函数,让你免于通宵加班(三)《值得收藏》

《详解269个JavaScript小函数,让你免于通宵加班(四)《值得收藏》

《详解269个JavaScript小函数,让你免于通宵加班(5)《值得收藏》

《详解269个JavaScript小函数,让你免于通宵加班(6)《值得收藏》

《深入JavaScript教你如何防止内存泄漏》

《教你 7 个有趣的 JavaScript 项目——论“用源码”》

《手把手教你 7 个有趣的 JavaScript 项目 - 第 2 部分》附源码”

“JavaScript 使用 mediaDevices API 访问相机自拍”

《教你如何报后端代码“JS”错误》

《一篇文章让你彻底了解联通后端与Web前端的区别》

《63个JavaScript常规礼包“值得收藏”》

提高 JavaScript 技能的 10 个测验问题

JavaScript 图表库的 5 个最佳选择

《一篇文章彻底理解JavaScript中Object.freeze和Object.seal的用法》

《Visual JS:动态图演示——事件循环流程》

《教你如何利用动态规划和贪心算法实现后端瀑布流布局“实践”》

《Visual js:动态图演示Promises & Async/Await的流程》

“你知道如何在原生JS封装中拖动和验证滑块吗?” “实践””

《如何实现高性能在线PDF预览》

源码交易网站源码_马拉松网站源码_源码网站源码

《字库加密数据详细使用——仿58同城》

“Node.js 结束了吗?”

“Pug 3.0.0即将发布,不再支持Node.js 6/8”

《纯JS手写轮播图(代码逻辑清晰,简单易懂)》

《JavaScript 20年中文版本制定标准》

《60多个值得收藏的常用后端工具“JS文章”》

箭头函数和常规函数的 5 个区别

“通过发布/订阅设计模式了解 Node.js 核心模块事件”

《《前端文章》不再担心正则化》

《速围》Node.js V14.3.0 发布,支持一流的 Await 和 REPL 增强功能”

《深入浏览器原理“流程图”》

“JavaScript已进入第三时代,未来将走向何方?” ”

《前端上传前预览文件图片、文本、json、视频、音频“练习”》

《深入理解EventLoop与浏览器渲染、帧动画、空闲弹跳的关系》

《推荐13个“值得收藏”的好用JavaScript链表方法》

《前端必备知识:window.location详解》

“停止依赖 CommonJS”

《Rhino 书作者:你应该忘记的 JavaScript 功能》

《作品中常用的36个JavaScript函数片段“值得收藏”》

《Node+H5实现大文件碎片上传及断点续传》

《一篇文章看懂文件上传全流程(深度解析1.8w字)《进阶前端必备》》

《【实践总结】关于小程序打破束缚,实现批量上传》

《教你如何在后台上传各类文件,并持续上传大文件》

《字节跳动面试官:请实现大文件上传和断点续传》

《谈谈前端关于文件上传和下载的事[练习]》

《手把手教你编写一个后端图片压缩、方向校正、预览、上传插件》

《最全的JavaScript模块化方案和工具》

《前端进阶》JS中的内存管理》

《JavaScript正则深入及10个特别有趣的正则实战》

《一个经常被前端面试官忽视的 JavaScript 面试问题》

《一行JS代码实现简单的模板字符串替换《练习》》

《JS代码是如何压缩的《前端中级进阶》》

《前端开发规范:命名规范、html规范、css规范、js规范》

《【规范】前端团队代码规范最佳实践》

《原生JavaScript代码片段100个知识点详解【实践】》

《后端174个JavaScript知识点总结(一)》

《后端174个JavaScript知识点总结(二)》

《后端174个JavaScript知识点总结(三)》

《几个特别有趣的javascript知识点总结[实践]》

源码交易网站源码_源码网站源码_马拉松网站源码

“都2020年了,你还不知道JavaScript装饰器吗?”

《JavaScript实现图片合成下载》

《JavaScript 70 个知识点详解(上)【练习】》

《JavaScript 70个知识点详解(下)[练习]》

《开源JavaScript版敏感词过滤库》

《送你 43 道 JavaScript 面试题》

“3个伟大的冷门JavaScript库,你值得拥有”

《教你深度巩固JavaScript知识体系【思维导图】》

推荐7个很棒的JavaScript产品分步指南库

《Echa哥教你彻底理解JavaScript执行机制》

《一名合格的高级后端工程师需要掌握的28项JavaScript技能》

《深入解析高频项目中使用的知识点总结【JS篇】》

《JavaScript工具函数百科[新]》

“从 JavaScript 来看设计模式(摘要)”

《身份证号码的正则表达式和验证解释(JavaScript、Regex)》

“在浏览器中实现 JavaScript 计时器的 4 种创新方法”

《Three.js动效解决方案》

《教你59种常用JS方法》

《127个常用JS代码片段,每段代码需要30秒才能理解——【第1部分】》

《深入讲解js深拷贝vs浅拷贝》

《教你如何用JS开发H5游戏【消除星星】》

《深入浅出讲解JS中this/apply/call/bind的巧妙用法【实践】》

《教你全面剖析JS中this的真谛【实践】》

“书用了,仇恨就少了,一大波JS开发工具功能就来了”

《干货满满!如何高贵简单地实现时钟翻转(支持JS/Vue/React)》

《教你JS异步编程的六种解决方案【实践】》

《让你减少加班的15个高效JS方法知识点总结[实践]》

《教你如何用JS开发H5游戏【黄金矿工】》

《教你JS监听浏览器上下左右滚动》

JS经典实例知识点总结【实践】

《26000字JS干货分享,带你感受后端的魅力【基础篇】》

《26000字JS干货分享,带你感受后端魅力【实践】》

《简单几步,让你的JS写得更漂亮》

“恭喜您获得治疗JS本病的详细处方”

《谈谈前端关于文件上传和下载的事[练习]》

《教你避免面试中关于 JavaScript 作用域的 5 个陷阱》

《Jquery插件(常用插件库)》

《[JS]如何避免重复发送ajax请求》

《JavaScript+Canvas实现自定义画板》

《Continuation在JS“前端”中的应用》

作者: 森罗

转发链接:

列表下方有分页功能

1.7 产品详情

点击上一页产品图片或产品名称,进入产品详情页面

该页面会显示商品标题、价格、颜色、尺码、库存等具体信息,页面底部会显示商品详细信息

点击左侧产品分类按钮,将进入对应类别的产品列表页面

1.8 用户登录

点击右上角【登录】按钮,进入用户登录页面

输入正确的用户名和密码,点击【立即登录】按钮登录

如果您还没有账户,可以点击【未注册,请先注册】按钮进行注册

1.9 用户注册

填写用户名和密码,以及收件人、电话和地址,点击【立即注册】按钮提交注册信息

如果您已有账户,可以点击【注册直接登录】按钮进入登录页面

源码下载站网站源码_心愿说网站源码

1.10 用户注销

登录成功后,右上角会显示当前登录用户名

连接鼠标至个人中心,点击【退出】按钮退出

1.11 购物车

在任意页面点击【加入购物车】按钮,对应的商品就会被添加到购物车中

出现【加入成功】提示后,右下购物车中的商品数量将会更新

点击右上角【我的购物车】按钮,进入购物车列表页面

页面显示商品图片、商品信息、单价、数量、单品小计及所有商品单价

购物车列表中可以减少商品数量、减少、删除等。

点击下方【提交订单】按钮,购物车中的所有商品都会提交并保存为订单

1.12 提交订单

选择购物车中的商品后,您可以点击【去结账】进入订单确认页面

此页面需要确认收货地址。 默认会显示个人信息中的电话号码和地址,并且可以更改订单详细信息。

选择对应的支付方式进行支付

支付成功后,会弹出支付成功提示,点击确定,进入列表页面

1.13 我的订单

连接鼠标到【个人中心】,点击下方动态出现的【我的订单】,即可查看所有订单列表

包括单笔订单的订单号、订单时间、总价、详情、当前状态

1.14 送货地址

连接鼠标到【个人中心】,点击下方动态出现的【收获信息】

在【收获信息】中可以更改姓名、电话号码和地址,点击【保存】按钮保存

下次提交订单时心愿说网站源码,收货信息中会显示新的收获信息

源码下载站网站源码_心愿说网站源码

1.15 修改密码

将鼠标连接到【个人中心】心愿说网站源码,点击下方动态出现的【更改密码】

在【更改密码】中可以更改登录密码,点击【保存】按钮保存

点击保存后会提示密码修改成功

2 后台管理界面 2.1 后台登录

在网站首页点击导航栏两侧【后台登录】即可进入登录页面

填写正确的用户名和密码后,点击【登录后台】按钮提交登录请求

登录成功后,进入欢迎界面

2.2 订单管理

点击导航栏【订单管理】进入订单列表

您可以通过单个订单后面的操作按钮来更改该订单的状态,如【已发货】【已完成】

源码下载站网站源码_心愿说网站源码

2.3 品类管理

点击导航栏【分类管理】,进入分类列表

在列表中可以对类别进行【修改】和【删除】操作

输入上方类别名称,点击【添加类别】按钮即可添加新类别

2.4 商品管理

点击导航栏【产品管理】进入产品列表

页面显示ID、图片、名称、简介、规格、价格、类别、库存、销量、操作

在列表中,您可以对产品进行【修改】和【删除】操作

列表上方的选项卡可以切换显示明天的推荐和所有产品列表

可以操作列表后面的【添加明天推荐】和【取消明天推荐】操作按钮

点击列表中的产品图片或产品名称,可查看产品详情页面

点击列表顶部的【添加产品】按钮,进入添加产品页面

底部有分页功能

心愿说网站源码_源码下载站网站源码

2.5 用户管理

点击导航栏【用户管理】进入用户列表

列表中可通过后部操作按钮【修改】【删除】用户信息

点击【重置密码】即可重置用户密码

2.6 管理员

点击导航栏【管理员】进入管理员列表,默认admin用户不允许操作

列表中可通过后部操作按钮【修改】【删除】用户信息

点击【重置密码】即可重置用户密码

2.7 退出

点击导航栏【退出】,注销当前用户并跳转至登录页面

3 源码下载

点击下载农家商城系统源码