当前位置: 首页 > news >正文

破解空间网站十堰网站建设怎么做

破解空间网站,十堰网站建设怎么做,wordpress怎么设置主页,空间设计网站公司前言 在日常工作中我们一定会遇到某个页面需要渲染比较多的内容,比如列表或者文字;一般当数据过多的时候,就会出现页面加载比较慢,很长时间没有内容的展示,用户体验不太好,当然这时候就有人会说直接使用虚拟…

前言

在日常工作中我们一定会遇到某个页面需要渲染比较多的内容,比如列表或者文字;一般当数据过多的时候,就会出现页面加载比较慢,很长时间没有内容的展示,用户体验不太好,当然这时候就有人会说直接使用虚拟滚动嘛,只展示其中一部分数据。这种确实是一个非常好的办法,但是如果页面可能不能使用虚拟滚动实现呢(虽然少,但是有可能),此时我们就需要实现分段渲染

一、分段渲染是什么?

分段渲染就是每次只渲染一部分数据,比如我有1w条数据,我每次只渲染其中10条或者20条数据。

二、实现

1.不使用分段渲染

首先我们先看一下不使用分段渲染,直接渲染全部数据是什么样子的,我们先降低浏览器的CPU,模拟低配置的运行方式
在这里插入图片描述
这里我们使用推荐的

<template><div><ul><li v-for="item in total" :key="item.id" style="margin-top: 10px"><div>显示其他内容</div>{{ item.name }}</li></ul></div>
</template>
<script setup lang="ts">
import { ref } from "vue";
const observer = new PerformanceObserver((list) => {console.log(list);const entries = list.getEntriesByName("first-paint");if (entries.length > 0) {const fcpTime = entries[0].startTime;console.log("First Contentful Paint:", fcpTime, "ms");observer.disconnect(); // 获取到数据后断开观察器}
});observer.observe({ type: "paint", buffered: true });
const total = ref([]);
// 造1000条数据
const startTime = performance.now();
for (let i = 0; i < 10000; i++) {total.value.push({id: i,name: `name${i}`,age: 18 + i,});
}
const endTime = performance.now();
console.log(`数据生成,耗时:${endTime - startTime}ms`);

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

我们能看到,FCP的时间高达1000+ms,每次刷新有偏差,但是基本都是1000+的

2 使用分段渲染

<template><div><ul><li v-for="item in list" :key="item.id" style="margin-top: 10px"><div>显示其他内容</div>{{ item.name }}</li></ul></div>
</template>
<script setup lang="ts">
import { ref } from "vue";
const observer = new PerformanceObserver((list) => {const entries = list.getEntriesByName("first-paint");if (entries.length > 0) {const fcpTime = entries[0].startTime;console.log("First Contentful Paint:", fcpTime, "ms");observer.disconnect(); // 获取到数据后断开观察器}
});observer.observe({ type: "paint", buffered: true });
const total = ref([]);
// 造1000条数据
const startTime = performance.now();
for (let i = 0; i < 10000; i++) {total.value.push({id: i,name: `name${i}`,age: 18 + i,});
}
const endTime = performance.now();
console.log(`数据生成,耗时:${endTime - startTime}ms`);
const list = ref([]);
// 使用requestAnimationFrame分批次渲染
const renderBatch = () => {const batchSize = 100;const totalItems = total.value.length;let startIndex = 0;const renderNextBatch = () => {const endIndex = startIndex + batchSize;const batchItems = total.value.slice(startIndex, endIndex);list.value.push(...batchItems);startIndex = endIndex;if (startIndex < totalItems) {requestAnimationFrame(renderNextBatch);}};renderNextBatch();
};
renderBatch();

这里使用requestAnimationFrame进行渲染,如果不清楚的可自行查阅mdn文档
此时我们看看结果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

此时结果最大1088ms,也能看出来提升较为明显;
不过会出现滚动条会一直变小,因为不断在渲染加载新的数据,当然这也不算什么大问题;
当然也不一定非得用requestAnimationFrame,用延时器也是一样的,目的都是为了每次只加载一部分数据

总结

以上就是关于通过使用分段渲染来达到快速加载数据的方法,当然,这种方式并不是最好的,因为真正涉及到大数据列表还是虚拟滚动的性能和效果最好。

http://www.dtcms.com/a/532856.html

相关文章:

  • 网站价值评估 php东莞住房和建设局网站
  • 11-14强制类型转换
  • redis中的数据类型
  • 2025年10月25日(星期六)骑行哈马者游记
  • 数据结构 —— 堆
  • 基于阿里云SDK的DDNS系统:架构设计与性能优化实战
  • 有哪些做调查问卷赚钱的网站自行创建网站的平台
  • 丰南建设网站wordpress网站前台打开慢
  • C4D域力场的修改层及遮罩详解
  • SAP SD交货单过账冲销接口分享
  • 如何在 Java 程序中检查是否可以连接到某个网站
  • 做网站市场报价步登顶wordpress小程序百家号
  • C语言复习笔记(一)
  • (10)shell 编程入门
  • 深入剖析C++文件操作的底层机制
  • 高端网站价格网架球加工厂家
  • 响应式网站文章网站建设字体变色代码
  • python+vue图书在线阅读推荐平台设计(源码+文档+调试+基础修改+答疑)
  • git仓库基本使用
  • 网站维护需要多久时间上海做网站建设公司排名
  • 在婚恋网站上做红娘怎么样什么都可以看的浏览器
  • 做平台网站要什么条件重庆网站建设重庆网站设计
  • 江苏系统建站怎么用咖啡网页设计素材
  • 网站建设软件免费使用密码访问wordpress文章
  • 物联网设备通信协议参数的能耗自适应调整机制
  • PySide6 win10 记事本从零到一——前言
  • win7 iis网站无法显示石家庄尚武科技
  • 建设网站哪家公司好网站建设公司招聘
  • UFS Reset 介绍
  • ESP8266无线开关