历史网站怎么做/游戏推广员上班靠谱吗

历史网站怎么做,游戏推广员上班靠谱吗,用asp.net 做网站,日照网站建设价格苏货运公司回收参考资料 Flutter for Web 首次首屏优化 ——JS 分片优化_main.dart.js-CSDN博客文章浏览阅读1.4k次。本文介绍了如何通过延迟加载组件和js分片优化Flutter for Web应用的加载速度。在实践中,通过按需加载减少js文件大小,使用并行加载提升加载效率。通过…

参考资料

Flutter for Web 首次首屏优化 ——JS 分片优化_main.dart.js-CSDN博客文章浏览阅读1.4k次。本文介绍了如何通过延迟加载组件和js分片优化Flutter for Web应用的加载速度。在实践中,通过按需加载减少js文件大小,使用并行加载提升加载效率。通过延迟加载组件功能,将各页面代码拆分,减少初始加载体积。此外,通过在index.html中预加载分片js实现并行加载,进一步减少加载时间。实测结果显示,优化措施显著提升了页面加载速度。 https://blog.csdn.net/u012181546/article/details/128355930一个编译问题带你了解 Flutter Web 的打包构建和分包实现_flutter web js分包-CSDN博客文章浏览阅读1.4k次。Flutter Web 作为 Flutter 框架中最特殊的平台,由于 Web 平台的特殊性,它默认就具备了两种不同的渲染引擎:html : 通过平台的 canvas 和 Element 完成布局绘制;canvaskit : 通过 Webassembly + Skia 绘制控件;虽然都知道 canvavskit 更接近 Flutter 的设计理念,但是由于它构建的 wasm 文件大小和字体加载等问题带来的成本考虑,业界一般会选用更轻量化的 html 引擎,而今天的问题也是基于 html 引擎来展开。_flutter web js分包 https://blog.csdn.net/qq_39221436/article/details/123802726?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-123802726-blog-128355930.235^v43^pc_blog_bottom_relevance_base2&spm=1001.2101.3001.4242.1&utm_relevant_index=2Flutter for web 首次加载过慢问题优化_flutter web 字体-CSDN博客文章浏览阅读6.8k次。本文针对Flutter for Web应用首次加载出现长时间白屏问题进行优化,主要从两个方面着手:一是通过更换Canvaskit的加载地址,使用国内CDN加速;二是处理字体加载,避免在线加载Noto字体导致的延迟和乱码,可选择自定义字体并精简资源。此外,删除不必要的系统资源包和添加加载动画也能提升用户体验。 https://blog.csdn.net/Bright_TY/article/details/120225419?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7EPaidSort-1-120225419-blog-128355930.235%5Ev43%5Epc_blog_bottom_relevance_base2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7EPaidSort-1-120225419-blog-128355930.235%5Ev43%5Epc_blog_bottom_relevance_base2&utm_relevant_index=1

deferred_helper | Flutter packageA plugin to help manage deferred content of a flutter aphttps://pub.dev/packages/deferred_helper

web性能查看工具

Debug performance for web apps | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter

官方给的优化方案

https://medium.com/flutter/best-practices-for-optimizing-flutter-web-loading-speed-7cc0df14ce5c

1、声明 延迟(deferred) 导入包

如:

import 'package:myapp/hello.dart' deferred as hello;Future<void> loadHelloLibrary() async {await hello.loadLibrary();hello.sayHi();
}

2、图片资源修改为webp格式

一、核心优化方向

1. 关键资源体积最小化
  • 启用 Tree Shaking 和压缩:声明html方式官方已不支持

  • Web 渲染器 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter

  • canvaskit 和 skwasm

    flutter build web --release --web-renderer skwasm 
  • 仅打包首屏必要代码

    • 使用路由懒加载(如 AutoRoute 或手动 import())。

    • 将非首屏组件(如弹窗、二级页面)拆分为独立模块

  • 移除冗余依赖

  • 检查 pubspec.yaml,删除未使用的包。

  • 使用 dependency_validator 工具扫描未使用的依赖:

  • flutter pub global activate dependency_validator
    

 使用

dart pub global run dependency_validator
2. 关键资源预加载
  • 预加载主 JS 和字体
    在 web/index.html 的 <head> 中添加:

  • <link rel="preload" href="main.dart.js" as="script">
    <link rel="preload" href="fonts/Roboto.woff2" as="font" type="font/woff2" crossorigin>
  •  预连接 CDN 或域名(如使用 CDN 托管 CanvasKit):

  • <link rel="preconnect" href="https://unpkg.com">

3. 优化资源加载顺序
  • 延迟非关键资源

    • 将统计脚本、广告 SDK 等移至页面底部或用 async/defer 加载:

    • <script src="analytics.js" defer></script>

    • 按需加载 CanvasKit(若必须使用):

    • # 构建时指定 CDN 路径,避免打包到主资源
      flutter build web --web-renderer canvaskit --dart-define=FLUTTER_WEB_CANVASKIT_URL=https://cdn.example.com/canvaskit/

二、渲染优化

1. 优先展示骨架屏
  • 添加 Loading 占位图

    • 在 Flutter 初始化完成前,通过 HTML/CSS 显示一个简单的骨架屏:

    • <!-- web/index.html -->
      <div id="skeleton" style="background: lightgray; width: 100%; height: 100vh;"></div>
      <script>window.addEventListener('load', function() {document.getElementById('skeleton').style.display = 'none';});
      </script>

2. 优化字体加载
  • 使用 font-display: swap
    在 web/styles.css 中定义字体:

  • @font-face {font-family: 'CustomFont';src: url('fonts/CustomFont.woff2') format('woff2');font-display: swap;  /* 先显示备用字体,再替换 */
    }

  • 子集化字体(仅保留必要字符)。

免布局抖动
  • 固定图片尺寸

    • 为 Image 组件明确指定 width 和 height,避免浏览器重排:

  • Image.asset('assets/logo.png', width: 200, height: 100)

三、服务端优化

1. 启用 HTTP/2 和 Brotli 压缩
  • Nginx 配置示例

  • server {listen 443 ssl http2;gzip on;gzip_types text/plain text/css application/json application/javascript;brotli on;  # 需要安装 Brotli 模块brotli_types text/plain text/css application/json application/javascript;
    }

  • Brotli 比 Gzip 压缩率提高 20-30%

2. CDN 加速静态资源
  • 将以下内容托管到 CDN:

    • main.dart.js

    • CanvasKit 文件(canvaskit.wasmcanvaskit.js

    • 字体和图片

3. 缓存策略
  • 设置强缓存(Cache-Control: max-age=31536000)和哈希文件名:

  • <!-- 在构建流程中为文件名添加哈希 -->
    <script src="main.dart.js?hash=abcd1234"></script>

四、深度优化技巧

1. 分析关键请求链
  • 使用 Chrome DevTools 的 Network 面板:

    • 过滤 initiator 为 parser 的请求(关键链请求)。

    • 优化最长任务(Long Tasks)和 TTI(Time to Interactive)。

2. Service Worker 缓存
  • 实现离线缓存和资源预加载:

// web/service-worker.js
self.addEventListener('install', (event) => {event.waitUntil(caches.open('v1').then((cache) => {return cache.addAll(['/', '/main.dart.js', '/styles.css']);}));
});

3. 动态加载渲染引擎
  • 根据设备能力动态选择渲染器:

  • // 在 web/index.html 中检测设备性能
    if (isLowEndDevice) {window.flutterWebRenderer = "html";
    } else {window.flutterWebRenderer = "canvaskit";
    }

五、效果验证

优化项优化前 (3G 网络)优化后 (3G 网络)
首屏加载时间4.8s1.2s
LCP (最大内容渲染)5.1s1.5s
JS 总体积 (gzip)2.1MB680KB

操作步骤总结:

  1. 构建优化:启用 Release 模式,选择 HTML 渲染器,代码分割。

  2. 资源预加载:预加载主 JS、字体,预连接 CDN。

  3. 服务端加速:启用 HTTP/2 + Brotli,CDN 分发。

  4. 渲染策略:骨架屏、字体 swap、固定图片尺寸。

  5. 深度优化:Service Worker 缓存、动态渲染引擎。

通过以上步骤,首屏加载时间可减少 60-80%。最终效果取决于具体场景,建议使用 Lighthouse 和 WebPageTest 持续跟踪指标。

调试

看网络资源请求,按照耗时排序

先将有外网链接的资源 下载下来,替换成本地链接(不只是字体文件 还有client 文本文件,需要注意类型)

替换步骤是

1、将外网资源下载下来,放入模版web目录下(会自动拷贝到打包的web目录下)

2、根据找到的文件名,在打包产物全局搜索,替换为本地路径

搜索关键字

KFOmCnqEu92Fr1Me5WZLCzYlKw

accounts.google.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/73003.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java定时任务的三重境界:从单机心跳到分布式协调

《Java定时任务的三重境界&#xff1a;从单机心跳到分布式协调》 本文将以生产级代码标准&#xff0c;揭秘Java定时任务从基础API到分布式调度的6种实现范式&#xff0c;深入剖析ScheduledThreadPoolExecutor与Quartz Scheduler的线程模型差异&#xff0c;并给出各方案的性能压…

QT QML实现音频波形图进度条,可点击定位或拖动进度

前言 本项目实现了使用QT QML创建一个音频波形图进度条的功能。用户可以在界面上看到音频波形图&#xff0c;并且可以点击进度条上的位置进行定位&#xff0c;也可以拖动进度条来调整播放进度。可以让用户更方便地控制音频的播放进度&#xff0c;并且通过音频波形图可以直观地…

高速网络包处理,基础网络协议上内核态直接处理数据包,XDP技术的原理

文章目录 预备知识TCP/IP 网络模型&#xff08;4层、7层&#xff09;iptables/netfilterlinux网络为什么慢 DPDKXDPBFPeBPFXDPXDP 程序典型执行流通过网络协议栈的入包XDP 组成 使用 GO 编写 XDP 程序明确流程选择eBPF库编写eBPF代码编写Go代码动态更新黑名单 预备知识 TCP/IP…

[每周一更]-(第137期):Go + Gin 实战:Docker Compose + Apache 反向代理全流程

文章目录 **1. Go 代码示例&#xff08;main.go&#xff09;****2. Dockerfile 多段构建**3.构建 Docker 镜像**4. docker-compose.yml 直接拉取镜像****5. 运行容器****6. 测试 API**7、配置域名访问**DNS解析&#xff1a;将域名转换为IP地址****DNS寻址示例** 8.错误记录 访问…

Qt之MVC架构MVD

什么是MVC架构&#xff1a; MVC模式&#xff08;Model–view–controller&#xff09;是软件工程中的一种软件架构模式&#xff0c;把软件系统分为三个基本部分&#xff1a;模型&#xff08;Model&#xff09;、视图&#xff08;View&#xff09;和控制器&#xff08;Controll…

(C语言)理解 回调函数 和 qsort函数

一. 回调函数 1. 什么是回调函数&#xff1f; 回调函数&#xff08;Callback Function&#xff09;是通过 函数指针 调用的函数。其本质是&#xff1a; 将函数作为参数传递给另一个函数&#xff0c;并在特定条件下被调用&#xff0c;实现 反向控制。 2. 回调函数的使用 回调函…

vscode记录

vs code 下载安装&#xff0c;git 配置&#xff0c;插件安装_vscode安装git插件-CSDN博客 手把手教你在VS Code中使用 Git_vscode如何输入git命令-CSDN博客 VS Code | 如何快速重启VS Code&#xff1f;_vscode 怎么一键全部重启-CSDN博客 1&#xff0c;安装插件与git集成 2&am…

大数据学习(80)-数仓分层

&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4dd;支持一…

数智读书笔记系列021《大数据医疗》:探索医疗行业的智能变革

一、书籍介绍 《大数据医疗》由徐曼、沈江、余海燕合著&#xff0c;由机械工业出版社出版 。徐曼是南开大学商学院副教授&#xff0c;在大数据驱动的智能决策研究领域颇有建树&#xff0c;尤其在大数据驱动的医疗与健康决策方面有着深入研究&#xff0c;曾获天津优秀博士论文、…

SpringSecurity——前后端分离登录认证

SpringSecurity——前后端分离登录认证的整个过程 前端&#xff1a; 使用Axios向后端发送请求 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>登录</title><script src"https://cdn…

qt下载和安装教程国内源下载地址

qt不断在更新中&#xff0c;目前qt6日渐成熟&#xff0c;先前我们到官方下载或者国内镜像直接可以下载到exe文件安装&#xff0c;但是最近几年qt官方似乎在逐渐关闭旧版本下载通道&#xff0c;列为不推荐下载。但是qt5以其广泛使用和稳定性&#xff0c;以及积累大量代码使得qt5…

Mysql架构理论部分

Mysql架构是什么&#xff1f;实际可以理解为执行一条sql语句所要经历的阶段有哪些&#xff01; 1.连接层 &#xff08;1&#xff09;客户端发起连接 客户端通过TCP/IP、Unix Socket或命名管道等方式向Mysql服务器发起链接请求 想要了解tcp与udp的区别&#xff0c;可以参考这…

架构师面试(十九):IM 架构

问题 IM 系统从架构模式上包括 【介绍人模式】和 【代理人模式】。介绍人模式也叫直连模式&#xff0c;消息收发不需要服务端的参与&#xff0c;即客户端之间直连的方式&#xff1b;代理人模式也叫中转模式&#xff0c;消息收发需要服务端进行中转。 下面关于这两类模式描述的…

【服务器】RAID0、RAID1、RAID5、RAID6、RAID10异同与应用

目录 ​编辑 一、RAID概述 1.1 磁盘阵列简介 1.2 功能 二、RAID级别 2.1 RAID 0&#xff08;不含校验与冗余的条带存储&#xff09; 2.2 RAID1&#xff08;不含校验的镜像存储&#xff09; 2.3 RAID 5 &#xff08;数据块级别的分布式校验条带存储&#xff09; 4、RAI…

MySQL身份验证的auth_socket插件

在Ubuntu 20.04 LTS上&#xff0c;MySQL 8.0默认使用auth_socket插件进行身份验证&#xff0c;可能存在意想不到的情况。 一、auth_socket插件 在使用sudo mysql或通过sudo切换用户后执行任何MySQL命令时&#xff0c;不需要输入密码或错误密码都可以正常登入mysql数据库&…

使用Python在Word中创建、读取和删除列表 - 详解

目录 工具与设置 Python在Word中创建列表 使用默认样式创建有序&#xff08;编号&#xff09;列表 使用默认样式创建无序&#xff08;项目符号&#xff09;列表 创建多级列表 使用自定义样式创建列表 Python读取Word中的列表 Python从Word中删除列表 在Word中&#xff…

软考-软件设计师-计算机网络

一、七层模型 中继器&#xff1a;信号会随着距离的增加而逐渐衰减&#xff0c;中继器可以接受一端的信息再将其原封不动的发给另一端&#xff0c;起到延长传输距离的作用&#xff1b; 集线器&#xff1a;多端口的中继器&#xff0c;所有端口公用一个冲突域&#xff1b; 网桥&…

关于Flask框架30道面试题及解析

文章目录 基础概念1. 什么是Flask?其核心特性是什么?2. Flask和Django的主要区别?3. 解释Flask中的“路由”概念。如何定义动态路由?核心组件4. Flask的请求上下文(Request Context)和应用上下文(Application Context)有什么区别?5. 如何访问请求参数?POST和GET方法的…

C++20 中 `constexpr` 的强大扩展:算法、工具与复数库的变革

文章目录 一、constexpr 在 <algorithm> 中的应用1. 编译时排序2. 编译时查找 二、constexpr 在 <utility> 中的应用1. 编译时交换2. 编译时条件交换 三、constexpr 在 <complex> 中的应用1. 编译时复数运算 四、总结 C20 对 constexpr 的增强是其最引人注目…

conda create之后,以前的conda env list 只能看到环境路径 没有环境名称了

1.命令 conda env list 看到的显示如下&#xff1a; 左边这列的"base"&#xff0c;指向的路径和其它环境变量安装的路径不一致。 这时需要通过"activate [anaconda的环境路径]"和"source activate"回到anaconda&#xff1a; 2.执行切换命令 …