首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

性能翻倍!京东亿级体量小程序优化实践

针对于附近生活圈频道页面,通过使用分包异步化将主包组件移至分包,将附近生活圈所占主包空间从126kb降低至39kb,极大地降低了主包代码体积;公共components,经过首页、购物车、我京等模块的共同努力...3.3 首屏渲染优化 页面首屏渲染的优化,旨在让用户更早的看到有内容的页面绘制(FCP)或者有意义的页面绘制(FMP)。...在京购小程序很多业务场景当中,小程序渲染的页面高度是超过一屏的,但在用户首次进入页面时,超出屏幕的页面内容并没有实际性的意义,因此只需要优先渲染出可视范围内的内容即可。...3.3.3 提前首屏数据请求 由于网络请求都需要一定的时间,但小程序页面渲染的数据却经常需要依赖服务端的接口返回,在服务端接口返回数据之前页面就可能是空白的或者骨架屏。...3.3.5 骨架屏 「骨架屏」用于页面渲染之前,通过一些灰色的区块大致勾勒出页面的轮廓占位,待页面数据加载完成后,再替换成真实的内容。

36610

React-Hooks-useLayoutEffect

useEffect 函数会在组件渲染到屏幕之后才执行, 所以会可能会出现 闪屏 的情况useLayoutEffect 函数是在组件渲染到屏幕之前执行, 所以不会出现闪屏情况首先来看 useEffect...只有在需要组件挂载之后更新 DOM 的布局和样式的时候才使用 useLayoutEffect为什么要使用 useLayoutEffect 来更新 DOM 布局和样式useEffect 是组件已经渲染到屏幕上了才执行...,useLayoutEffect 是组件还没有渲染到屏幕上就会执行,所以如果在组件已经渲染到屏幕上了, 才去更新 DOM 的布局和样式, 那么用户体验不好, 会看到闪屏的情况,而如果是在组件还没有渲染到屏幕上..., 就去更新 DOM 的布局和样式, 那么用户体验更好, 看不到闪屏情况。...大家点赞支持一下哟~ 我正在参与2023腾讯技术创作特训营第二期有奖征文,瓜分万元奖池和键盘手表图片

26520
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Progressive Web Apps

    ) 另外,得益于缓存-代理机制,再次访问时走本地缓存会相当快 类native:像设备原生App一样,具有沉浸式的用户体验(即全屏) 除了全屏外,还有主屏图标(让Web App在主屏幕有一席之地)和系统通知...但侧重点不同,PWA的缓存机制偏向于静态资源缓存,而Web App/SPA的缓存层多用来做动态内容缓存(上次的内容没过期的话,不再重新获取动态部分,而是直接做客户端渲染) 至于全屏,主屏图标以及系统通知等类...Install Banners 这样理想情况下我们就拥有了主屏图标,支持Web App Manifest的环境会选用最合适的(最接近48dp的)图标 注意:index.html里的内容应该是首屏渲染需要的最小化内容...如开篇所说,PWA并没有天生的(首屏)性能优势,Web App适用的常规优化手段仍然是必要的 闪屏(Splash) 从主屏图标进入,可定制的启动过程显示内容包括:标题,背景色和图像。...以渐进增强的方式,不需要太高成本就能完成Web App到PWA的“升级”,让部分用户(支持PWA的环境)获得更快(缓存)更便捷(主屏图标)的类native体验(全屏) 那么具体应用场景分以下几种: 缓存能带来明显收益的

    1.1K40

    国内手机正集体转向OLED屏幕,“LCD永不为奴”的时代要落幕了吗?

    有数据统计表示,自2017年起,全球范围来看,OLED的市场份额正逐年上升,预计到2022年将正式与LCD屏幕打个平手,并将在2023年完成反超。...有媒体统计认为,截至到5月初,今年推出的新机中,除了一两款面向线下用户的“千元机”外,几乎所有的中端新机都已经将OLED屏幕作为标配,即便采用了直屏设计也是如此。 为啥手机厂商开始偏爱OLED?...与LCD相比,OLED的色彩准确度近乎完美,以人类肉眼几乎无法区分。 另外,由于OLED造价相对较高,对于厂商来说碎屏维修费也是一笔利润。但对更全面的用户体验来说,OLED仍然称不上完美。...虽然现在许多厂商在尝试使用DC调光技术来解决OLED屏幕的频闪问题,但效果仍未达到理想状态,并且出于成本等问题的考虑,也只应用在了部分旗舰机上。...所以,尽管从LCD切换成OLED正在成为手机厂商们的新趋势,但对用户来说,OLED烧屏与频闪的问题一日不被解决,用户仍将继续怒喊“LCD永不为奴”。

    80150

    盘点这些年搭建器在用户体验优化的实践|得物技术

    因此我们选择使用 performance.mark来计算,不过隐藏的问题是这个只是资源加载的时间,没有包含渲染的时间,数值会偏小。...由于CDN缓存是没有状态和身份的,因此,所有用户访问的内容都是一样的,此时我们就没办法针对不同的用户在首屏渲染时展示特异性的数据。...页面体验优化上面我们分别从资源和接口层面尝试优化了从用户请求到实际展示内容的链路,让用户能够尽早的看到核心内容。接下来我们再来看一下当页面到达了浏览器进行CSR(客户端渲染)后的用户体验优化。...,高效且并行的进行多组件异步加载,哪个组件先加载好久展示哪个,没有加载好之前,依然可以展示骨架屏兜底展示,防止页面抖动。...这些实践大部分都是我加入团队之前,团队的其他同学就已经完成的。当然,我也参与了其中一部分功能的开发与优化。

    8310

    「前端进阶」高性能渲染十万条数据(时间分片)

    对于一次性插入大量数据的情况,一般有两种做法: 时间分片 虚拟列表 本文作为开篇,着重来介绍如何使用 时间分片的方式来渲染大量数据,虚拟列表相关的内容,日后会持续整理。...,它的触发时间是在渲染完成,在下一次 EventLoop中执行的 关于Event Loop的详细内容请参见这篇文章--> 依照两次 console.log的结果,可以得出结论: 对于大量数据渲染的时候,...我们可以看到,页面加载的时间已经非常快了,每次刷新时可以很快的看到第一屏的所有数据,但是当我们快速滚动页面的时候,会发现页面出现闪屏或白屏的现象 为什么会出现闪屏现象呢 首先,理清一些概念。...因此,当你对着电脑屏幕什么也不做的情况下,大多显示器也会以每秒60次的频率正在不断的更新屏幕上的图像。 为什么你感觉不到这个变化?...简单聊一下 setTimeout 和闪屏现象 setTimeout的执行时间并不是确定的。

    2.5K42

    移动Web 开发中的一些前端知识收集汇总

    要说移动Web 开发与传统的PC 端开发,感觉也没什么不同,但得益于苹果对于智能机的推动,CSS3+HTML5几乎可以毫无顾忌的使用,然后浏览器端考虑webkit内核的就差不多了。...,再从主屏幕打开这个网页,可以隐藏浏览器的地址栏和下面的toolbar; 第二个meta标签表示:强制让文档的宽度与设备的宽度保持1:1,并且文档最大的宽度比例是1.0,且不允许用户点击屏幕放大浏览;...--不让android识别邮箱--> 自定义主屏上的图标 用户添加到主屏后,如果网站没有图标,则默认主屏上的图标为当前网页的截图,你可以通过下面的代码指定在普通和retina屏幕上的icon: <link...添加初始化图片 用户点击你桌面上的webapp的图标后,打开会加载浏览器(实际上是webkit webview模块),然后下载、解析、渲染,在这个过程中,ios允许我们使用一个初始化图片来替代白色的浏览器屏幕...:none;outline:none;} iOS 浏览器横屏时会重置字体大小的问题 iOS 浏览器横屏时会重置字体大小,设置 text-size-adjust 为 none 可以解决ios上的问题,但桌面版

    3.9K50

    京东购物小程序购物车性能优化实践

    Part 1 扫雷篇-分析性能问题 优化要点 首屏时间:指用户打开页面到看到第一屏主要内容的时间 渲染时间:指数据首次渲染或引起页面结构变化的渲染所花费的时间 请求耗时:请求耗时越长,用户等待的时间越长...监控系统 项目上线前,可以通过测试机检验优化效果,但测试数据毕竟不能反映用户实际情况。因此,像购物车这种,展示内容与用户强相关的页面,非常有必要使用监控系统辅助分析。...Part 2 实践篇-性能优化历程 自动分页渲染 背景 早期,为缩短白屏时间,购物车使用了分屏渲染技术,把数据分为首屏和非首屏两部分,首屏渲染完成后再渲染非首屏数据。...分屏渲染最大问题在于,一旦非首屏数据量过大,渲染耗时会很长,让用户等待很长时间,最糟的情况可能引起页面假死,严重影响用户体验。...短期内无法实现分页请求数据,只能实现纯前端分页 数据量大。每个商品不仅包含主品的各项信息,还可能附加与商品结构类似的赠品、换购商品等 商品列表顺序动态改变。

    2.2K21

    京东购物小程序购物车性能优化实践

    Part 1 扫雷篇-分析性能问题 优化要点 首屏时间:指用户打开页面到看到第一屏主要内容的时间 渲染时间:指数据首次渲染或引起页面结构变化的渲染所花费的时间 请求耗时:请求耗时越长,用户等待的时间越长...监控系统 项目上线前,可以通过测试机检验优化效果,但测试数据毕竟不能反映用户实际情况。因此,像购物车这种,展示内容与用户强相关的页面,非常有必要使用监控系统辅助分析。...Part 2 实践篇-性能优化历程 自动分页渲染 背景 早期,为缩短白屏时间,购物车使用了分屏渲染技术,把数据分为首屏和非首屏两部分,首屏渲染完成后再渲染非首屏数据。...分屏渲染最大问题在于,一旦非首屏数据量过大,渲染耗时会很长,让用户等待很长时间,最糟的情况可能引起页面假死,严重影响用户体验。...短期内无法实现分页请求数据,只能实现纯前端分页 数据量大。每个商品不仅包含主品的各项信息,还可能附加与商品结构类似的赠品、换购商品等 商品列表顺序动态改变。

    2.7K21

    用APICloud如何开发出运行体验良好、高性能的 App

    要理解并控制窗口好切与界面渲染之间的关系,要适时更新 UI,如果 Window 或 Frame 中所加载的静态页面内容过多,建议等动画执行完毕再进行页面的加载和渲染。...无论是 Android 还是 iOS 系统,在进行窗口切换的时候,如果窗体本身正在进行渲染(Window 或 Frame 所加载的网页没有渲染完毕),则会影响切换动画运行的流畅性,出现卡顿或丢帧的情况。...三星、小米等大屏 Android6.0 及以上手机,可以尝试在云编译的时候选择使用 Android 引擎渲染优化版本 如果窗体所加载的静态网页内容比较多 (如:初始的 Dom 树很大或图片很多),在 Android...导航切换: 切换底部导航或顶部分类菜单的时候,要求切换体验平滑,切换过程不能出现白屏、闪屏等现象 建议使用 FrameGroup 来实现 Frame 的切换,要按需合理配置预加载的 Frame 数量,每个...例如在自定义 Loader 中运行没有问题,但云编译的包就有问题,出现页面无法加载或资源找不到等问题,通常就是使用了中文或大写的文件命名。

    2.3K20

    如何规范移动应用交互设计?UIUX设计师须知的11个小技巧

    尽管所有的应用程序都有自己的独特性,但用户最喜欢的搜索方式还是向下滑动然后搜索所需内容。...不要使用闪屏 优先向用户展示应用程序的价值主张,直接把它们放在主屏幕上。当用户打开应用程序时一眼就能看到。 不需要制作花哨的闪屏,这样你也不用为漂亮的插图而苦恼。...根据研究表明,用户平均会花费45秒来选择一个应用程序。 他们通常会下载十个应用程序而选择一个,因此你的应用程序必须在10秒内吸引住用户并显示其价值。因此,使用闪屏显得不合时宜。...尝试简化表格试用,用户不必不在这里填写重要的表格。所以,请尝试设置不同的交互方式来填充表格。...大多数设计师在没有考虑这一客观事实的情况下,在屏幕上删除了许多功能,并制作了一个普通的屏幕过滤器来迷惑用户。 我强烈建议设计师提供一个有效的过滤器和排序选项,带给用户满意的体验。

    1.3K90

    Android界面性能优化必读

    但是,低于 30 Fps 是无法顺畅表现绚丽的画面内容的,此时就需要用到 60 Fps 来达到想要表达的效果。...如果屏幕刷新率比帧速率还快,屏幕会在两帧中显示同一个画面,这种断断续续情况持续发生时,用户将会很明显地感觉到动画的卡顿或者掉帧,然后又恢复正常,我们常称之为闪屏、跳帧、延迟。...应用应避免这些帧率下降的情况,以确保 GPU 能在屏幕刷新之前完成数据的获取及写入,保证动画流畅。 1.7 UI 绘制机制与栅格化 绝大多数渲染操作都依赖两个硬件: CPU 、 GPU 。...但如果视图中的绘制内容发生变化时(比如不可见了),那之间的 DisplayList 就无法继续使用了,这时系统就会重新执行一次重新创建 DisplayList 、渲染DisplayList 并更新到屏幕上...某些不怎么重用的耗资源视图,可以等到需要的时候再加载,提高UI渲染速度; 使用 ViewStub 标签来加载一些不常用的布局; 动态地 inflation view 性能要比用 ViewStub 标签的

    4.8K10

    微信小游戏直播 — Android跨进程渲染推流实践

    需要谨慎处理切出小游戏后暂停画面推流的情况,否则可能录制到主播的其他界面,有隐私风险 最关键的一点:产品设计上需要在小游戏上展示一个评论挂件(如下图),便于主播查看直播评论以及进行互动,录屏直播会让观众也看到这个组件...小游戏录屏时的情况 小游戏之前支持过游戏内容的录制,和直播原理上类似,都需要获取当前小游戏的画面内容,录屏启用时小游戏会切换到如下的模式进行渲染: ?...描述很简单,它会阻塞直到之前调用的所有GL指令全部完成,这么看来是之前的GL指令太多了?...既然glFinish所带来的阻塞无法避免,那我们回到问题的开始——为什么需要glFinish?由于双缓冲机制的存在,一般来说并不需要glFinish来等待之前的绘制完成,否则双缓冲就失去了意义。...这个过程也让我深刻体会到了glFinish使得双缓冲机制失效所带来的性能影响是巨大的,在使用OpenGL进行渲染绘制时对于glFinish的使用应当非常谨慎。

    2.4K21

    渐进式Web应用清单(翻译转载)

    还有一些关于加载更少脚本的小建议:确保尽可能多的使用来异步加载脚本,同时确保阻塞渲染的CSS被标记出来。...用户体验 页面加载时内容不闪 测试 在PWA里面加载不同的页面,确保页面加载时内容或界面不会“跳动” 修复 确保所有内容,特别是图片和广告,在CSS或者元素属性里有固定尺寸。...应用安装提示不要被过度使用 测试 检查加载完成时PWA没有使用应用安装广告 修复 应该只有一个顶部或者底部应用安装横幅 在PWA被添加到用户的主屏后,任何顶部/底部横幅都应该被移除 拦截添加到主屏提示...测试 检查浏览没有在不恰当的时候展示添加到主屏,例如当用户正在进行某项操作时,或者另外一个提示已经在屏幕上显示时。...来异步加载脚本,同时确保阻塞渲染的CSS被标记出来。

    1.6K20

    Android性能优化典范 - 第6季

    其次是reportFullyDrawn方法:我们通常来说会使用异步懒加载的方式来提升程序画面的显示速度,这通常会导致的一个问题是,程序画面已经显示,可是内容却还在加载中。...有时候,我们会一股脑的把绝大多数全局组件的初始化操作都放在Application的onCreate里面,但其实很多组件是需要做区队对待的,有些可以做延迟加载,有些可以放到其他的地方做初始化操作,特别需要留意包含...如果程序的启动速度足够快,我们看的闪屏窗口停留显示的时间则会很短,但是当程序启动速度偏慢的时候,这个启动闪屏可以一定程度上减轻用户等待的焦虑感,避免用户过于轻易的关闭应用。...目前大多数开发者都会通过设置启动窗口主题的方式来替换系统默认的启动窗口,通过这种方式只是使用『障眼法』弱化了用户对启动时间的感知,但本质上并没有对启动速度做什么优化。...对于启动闪屏,正确的使用方法是自定义一张图片,把这张图片通过设置主题的方式显示为启动闪屏,代码执行到主页面的onCreate的时候设置为程序正常的主题。 5.

    71230

    Android性能优化(一)

    因为现在 App 应用启动都会先进入一个闪屏页(LaunchActivity) 来展示应用信息。...--显示虚拟按键,并腾出空间--> [70] 这样设置的话,就会在冷启动的时候,展示闪屏页的图片,等App进程初始化加载入口 Activity (也是闪屏页) 就可以无缝衔接。...2000ms - diffTime. } 所以就可以动态的设置应用闪屏的显示时间,尽量让每一部手机展示的时间一致,这样就不会让手机配置较低的用户感觉漫长难熬的闪屏页时间(例如初始化了2000ms...广告页优化 闪屏页过后就要展示金主爸爸们的广告页了。...和其它窗口一样,启动窗口也需要通过PhoneWindow来设置布局信息DecorView。所以在上面视觉优化中的设置闪屏图片主题的启动窗口显示的就是图片内容。

    2.7K20

    微信小游戏直播在Android端的跨进程渲染推流实践

    小游戏直播本质上就是把主播手机屏幕上的内容展示给观众,自然而然地我们可以想到采用系统的录屏接口MediaProjection进行视频数据的采集。...(如下图),便于主播查看直播评论以及进行互动,录屏直播会让观众也看到这个组件,影响观看体验的同时会暴露一些只有主播才能看到的数据。...但仔细一想,系统提供的SurfaceView是非常特殊的一个View组件,它不经过传统的View树来参与绘制,而是直接经由系统的SurfaceFlinger来合成到屏幕上,而SurfaceFlinger...描述很简单:它会阻塞直到之前调用的所有GL指令全部完成。 这么看来是之前的GL指令太多了?...这个过程也让我深刻体会到了glFinish使得双缓冲机制失效所带来的性能影响是巨大的,在使用OpenGL进行渲染绘制时对于glFinish的使用应当非常谨慎。

    1.1K10

    Android App性能优化全方面解析

    Android官方规定:activity如果5s内无响应事件(屏幕触摸事件或者键盘输入事件)。BroadcastReceiver如果在10s内无法处理完成。Service如果20s内无法处理完成。...刷新数据时,尽可能使用局部刷新,而不是全局刷新,第一、界面会闪屏一下,网差的界面直接白屏一段时间也不是不可能。第二、流量的使用!!我又要拿我们公司项目搞事情了。一个闪屏的缓存60+M。。。...相比冷启动,暖启动过程减少了对象初始化、布局加载等工作,启动时间更短。但启动时,系统依然会展示闪屏页,直到第一个 Activity 的内容呈现为止。...但是一般项目都会有闪屏页。然后从闪屏跳转到首页。我们可以按照大多数的项目来改善。怎么说的,我们可以看到一般项目都有倒计时显示。也就是说倒计时结束就自动进入首页。或者可以直接跳过进入首页。...我们可以通过此方法进行预加载。 我们还可以这样,闪屏页我们把他当作一个fragment嵌套在MainActivity中,那么我们可以在进入闪屏时直接预加载主页的view。

    67610

    小程序视频组件踩坑历险记

    好吧这个方案听起来就很有问题,列表长了渲染这么多视频组件肯定会crash的。然而寄希望于小程序说不定对长列表做了优化(并不会)还是做了一下尝试。然后真机测试的时候十分争气地在刷了几屏后崩溃并死机了。...然而:真机测试时,这种情况下视频组件没有在视图中渲染,TxvContext.getTxvContext(playerid)无法获取到视频上下文(设width和height为1倒是可以的)。...尝试之后发现视频组件在全屏后并没有自行开始播放。 排查排查排查 最后认为原因是改变了组件绑定的vid后需要加载重新视频数据,而视频还没有被加载出来就调用了play()方法,所以这里其实是无效的。...T^T 【真 · 结果】 产品&设计体验了之后,认为点击视频图片后突然横屏播放的交互太差劲了(小程序似乎还不支持自动旋转屏幕)。 于是把直接在列表页播放视频的功能删掉了。...只好在显示modal的时候把视频组件隐藏掉,显示一张视频图片占位。 为什么不用wx:if呢,因为性能不好,视频组件会被完全重新渲染,而且也无法保留之前的播放状态。

    2.1K20

    提升 Web 核心性能指标的 9 个建议

    使用 CDN 前两个 LCP 的建议是和如何构建 HTML 来让 LCP 资源易于被发现以及优先下载有关,但这都取决于首屏加载 HTML 的速度。...所以,最后一个建议是使用 CDN 来优化 First Byte 的时间。 在浏览器收到第一次 HTML 请求响应的第一个字节之前,网站是无法开始加载任何子资源的。...一个页面可能在初始加载时具有很大的 CLS ,因为随着其他内容(如图像和广告)的加载,页面的结构会一直产生变化,从而影响 CLS。当然,我们应该尽量在首屏页面渲染时避免加载这些内容。...这就完全消除了任何 CLS 的加载,如果从头开始重新渲染页面,BF 缓存也会默认启用,我们不需要采取任何措施来主动启用它,但是我们可以使用某些 API 阻止浏览器使用它,但这可能会导致浏览器没办法更好的响应...BF Cache 是 Chrome 团队为了让网页浏览更快的正在开发的一系能力之一,这个领域还有一些其他的能力,比如预加载和预渲染也是可以改善网站 CLS 指标的。

    61720
    领券