动态import来拆分代码后发布问题

项目vite1.0升级到2.0打包遇到Some chunks are larger问题如何解决 打包项目过程中遇到警告 (想看结果,可以滑至底部) 输出文件名字/static/vendor.9b5698e4.js 806.03kb/brotli:skipped(large chunk) Some chunks are larger than 500kb after minification.Consider: Using dynamic import() to code-split the application Use build.rollupOptions.output.manu... 阅读详情

当使用SPA(单页应用)的时候,为了提高性能,我们经常使用动态import来拆分代码。这种情况发布的时候可能会有这样的问题:

假如用户在发布前已经进入该应用,当用户在发布后再进入某个引入分片代码的的界面,那么很可能页面静态资源的路径是旧的,而服务器新发布的资源路径是新的(大多数路径不一样是文件名的hash值不同导致的,我们这里也假设是这样情况),那么两个路径不一样,从而导致404的发生。

我们这里讲一种简单的处理方法:

  1. 设置HTML不缓存
<meta http-equiv="Cache" content="no-cache">
<meta http-equiv="Cache-control" content="no-cache">
  1. 给动态引入的JS加上hash值,这一块不懂的可以看这篇文章
//动态import处代码
import(/* webpackChunkName: "[request]" */`../../containers/${requestPath}`)
//webpack.config.js
//... 其他代码
output: {
    //... 其他代码
    filename: '[name].[hash].js',
    chunkFilename: '[name].[hash].js',//这里使用hash,也可以是其他的hash具体按自己的项目来定
},
//... 其他代码
  1. 设置缓存头信息
//我这里使用的是koa2做为服务器的 根据使用的服务器来设置响应头信息就可以了
app.use(require('koa-static')(__dirname + '/public',{
    maxage:1209600000//这个时间根据具体的项目来自己定
}))

通过上述步骤就可以了,当用户在发布后再进入某个引入分片代码的的界面,那么页面中的引用是旧的资源路径,由于页面有缓存那么不会报错。当用户新进入页面的时候(比如刷新一下)那么由于HTML文件是不缓存的,它引入的js也是新的路径,而分片路径也是新的,所以界面就不会报错了。

这里需要注意的一点就是服务端新发布的代码最好可以兼容一下旧的界面,比如旧的界面要报个错什么的。

Spring Boot配置拆分实战:用`import`功能管理多环境YML文件(附常见路径问题解决) 本文详细介绍了如何使用Spring Boot的`import`功能拆分和管理多环境YML配置文件,解决配置膨胀和环境隔离问题。通过实战案例展示配置分类、路径问题解决方案及性能优化技巧,帮助开发者实现高效配置管理,提升微服务架构下的开发效率。 阅读详情

相关推荐

Python微服务实战:从单体拆分、通信到注册发现

微服务架构是应对业务复杂度增长的一种演进方式,其核心思想是将单体应用按业务能力拆分为独立部署的服务单元,通过服务通信与注册发现机制实现协作。理解服务拆分边界、同步与异步通信原理,是实施架构改造的基础。这种架构带来的技术价值在于独立扩展、故障隔离和团队并行,适用于中大型业务系统或多团队协作场景。Python 生态中,FastAPI、Celery、Consul 和 Redis 等工具为落地提供了成熟方案。本文结合工程实践,梳理从单体到微服务的具体路径,包括拆分原则、通信选型、注册中心接入、分布式锁与排查清单,帮

weixin_30466039的博客 555

文档库开发之-vite打包优化

背景 首次进行组件库文档打包,遇到了一些ts打包报错和css打包警告,记录下处理过程。并且发现打包后的主包的体积过大,有一定优化空间 ts报错处理 当时有好奇为什么开发环境下都不报错,构建才产生这么多ts错误。大致猜想可能vite在dev和build下对ts处理可能有点不一样。 翻查文档得知,vite仅执行.ts文件的转译,并不执行任何类型检查,(可以在构建脚本中运行tsc --noEmit或者安装vue-tsc然后运行vue-tsc --noEmit来对你的*.vue文件做...

qq_39831708的博客 1万+

大麦APP抢票协议分析:从‘掌密网络’代码看移动端API安全防护

本文深度解析了大麦APP抢票协议的安全防护体系,重点分析了'掌密网络'代码中体现的动态签名、设备指纹和人机验证等关键技术。文章详细介绍了大麦APP如何通过多层次API安全防护应对抢票压力,包括参数加密、请求头部设计和异常处理机制,为移动应用开发者提供了安全实践建议。

weixin_28740299的博客 292

当前端项目过大时,你是如何做拆分的?

通过这些拆分策略,可以大大提高前端项目的可维护性、可扩展性和开发效率。同时,也有助于团队成员之间的协作和代码复用。当前端项目过大时,拆分项目是一个很好的做法,可以提高代码的可维护性、可读性和可扩展性。

王铁柱666的博客 877

离散数学期末考试试卷(两套)-熟悉题型

3.设集合A={a,b,c,d}上有自反关系R={,,,,},对称关系S={,,,}。6.设集合A={1,2,3},B={u,v,w},C={a,b,c},f是集合A到集合B上的映射,g是集合B到集合C上的映射,f={, , },g={},则复合函数g。5. 设集合A={a,b,c,d,e},下列选项中哪一个集合不是A的划分( )。

muse3159546973的博客 6959

HT7036计量芯片SPI通信与数据读取实战解析

本文详细解析HT7036计量芯片的SPI通信与数据读取实战,涵盖SPI时序配置、命令发送、数据读取及常见问题排查。重点介绍如何通过SPI接口与MCU通信,实现电能数据的稳定采集与处理,为智能电表等应用提供实用解决方案。

vscode5coder的博客 266

Maven警告解决:Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platfor

在pom.xml文件中增加如下代码即可解决。 <properties> <project.build.sourceEncoding> UTF-8 </project.build.sourceEncoding> </properties>

ZaynFox的博客 659

Tessent --- PDL

当关联的ICL模块是当前ICL顶部模块时,即当它与当前设计匹配时,只能iCall一个iTopProc。但是,可以在iTopProc内调用iCall iProc或iTopProc。为指定后续iProc命令引用的ICL模块,发出这个命令之后,随后定义的iProc都会对应的ICL模块进行定义。为后续iCall调用,当使用iCall命令调用该过程时,参数列表中的变量将被替换为iCall命令中指定的值。在调用iProc时,运行iProc内的命令。PDL是面向工程师的,工程师利用PDL语言,对ICL中的单元进行控制。

qiantianyiqian的博客 2791

前端项目使用import()传入路径变量不能动态导入模块的问题

前端项目使用import()传入路径变量不能动态导入模块的问题

Christopher的博客 1965

数据库和BI工程师面试题

 一.数据库 1.Oracle数据库,视图与表的区别?普通视图与物化视图的区别?物化视图的作用? 2.Oracle数据库,有哪几类索引,分别有什么特点? 3.Union与Union All的区别? 4.对游标的理解?游标的分类?使用方法? 5.如何查找和删除表中的重复数据?给出方法或SQL。 6.不借助第三方工具,怎么查看SQL的执行计划? 7.创建索引有哪些需要注意的要点?

web_go_run的专栏 1万+

通用具身智能仿真平台桃源2.0,三行代码定义任务,数采效率最高提升20倍

木木-具身Xbot具身知识库2025年03月13日 17:40浙江在首个“城市级”大规模仿真平台GRUtopia1.0的基础上,升级后的GRUtopia2.0凭借通用模块化框架、场景资产自动化生成、高效数据采集系统三大革新,进一步向通用化、多样化、易用化迈进。仅通过单一平台、简单代码输入,即可实现仿真环境中机器人灵活训练,提升数据采集效率,为研究者提供了“一站式”具身智能开发解决方案。

具身机器人和通用AI 818

从require.ensure到import():bundle-loader背后的webpack代码分割演进史

当你的应用打包出一个动辄 5MB 的 JS 文件时,首屏加载慢几乎成为必然——这正是 **webpack 代码分割(Code Splitting)** 要解决的经典问题。而在 webpack 生态的早期,**bundle-loader** 正是最流行的代码分割工具之一:它能把一个模块拆成独立 chunk,实现按需加载。今天,我们就沿着「require.ensure → bundle-loader

gitblog_00369的博客 431

【JTAG】1149.6协议详解

JTAG1149.6协议是1149.1协议中Boundary-Scan结构的扩展,1149.1对交流耦合、差分或两者兼有的情况并没有得到充分的处理。该协议支持新的I/O测试结构。需要时变(AC)信号的高级I/O引脚允许测试它们之间的连接,这包括所有差分信号引脚或单端信号引脚,通过设计支持交流耦合。..................

xuhe0206的博客 4575

自然数拆分问题的递归与动态规划解法详解

自然数拆分是组合数学中的经典问题,指将一个正整数表示为若干正整数之和的形式。其核心原理是通过递归或动态规划方法系统地枚举所有可能的组合方式。在算法设计中,递归回溯通过逐步构建解空间树来实现,而动态规划则利用子问题重叠特性提高效率。这类问题在资源分配、密码学等领域有重要应用价值。针对P2404这类编程竞赛题目,关键在于正确处理非递增顺序和去重逻辑。通过剪枝优化和记忆化技术,可以显著提升算法性能,特别是处理较大整数时。

weixin_34348805的博客 343

药物对接仿真软件:HADDOCK_(16).实践项目:抗体-抗原对接案例

定义分子结构文件。

kkchenjj的博客 580

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

KubeSphere 外部仓库暂存区(staging)机制详解:模块拆分、符号链接引用与自动发布

KubeSphere 主仓库 `kubesphere/kubesphere` 中的 `staging/` 目录,是面向"被拆分为独立仓库的 Go 模块"而设计的**外部仓库暂存区**:拆分后的 `kubesphere.io/api`、`kubesphere.io/client-go` 等模块的代码先以源码形式保存在此,主仓库通过符号链接(symlink)与 Go modules `replace`

gitblog_00723的博客 369

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Spring Boot配置文件拆分实战:多环境Profile与模块化管理

在Spring Boot工程实践中,application.yml 随着业务增长常变成数百行的“配置大杂烩”,环境切换靠注释开关、敏感信息混放等问题频发。理解配置文件的内在组织方式,是提升项目可维护性的基础。Spring Boot 提供了基于 Profile 的环境隔离机制,通过 application-{profile}.yml 与 spring.config.import 实现按环境、按业务模块的灵活拆分;配合外部化配置与配置优先级规则,可有效控制配置来源与覆盖关系。该方法适用于微服务、多环境交付及团队

weixin_33859844的博客 416

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

深入解析 Kubernetes 的 staging 目录:单仓库开发与 k8s.io 多仓库发布的桥接架构

`staging/` 是 Kubernetes 主仓库中一块特殊的中转区:它以"目录内的 Go 模块"形式,容纳了 30 多个将被拆分到独立 `k8s.io/*` 顶层仓库(如 `client-go`、`api`、`apimachinery`)的代码,并让主仓库在编译期直接引用这些本地模块,而不是引用发布到远端的外部依赖。阅读本文后,你将理解 `staging/` 目录的结构与运作原理、Go wo

gitblog_00012的博客 334

CodeQL 1.26 JavaScript 分析改进详解:框架感知增强、查询行为变更与 XSS 库 API 拆分

本文基于 CodeQL 仓库中的 [1.26 JavaScript 分析变更说明](https://link.gitcode.com/i/e9f2759ee5f12bff41c4f08fc0946e34),完整解读该版本在 JavaScript 语言包上的三项核心演进:通用分析能力改进(Angular/React/动态 import/更多框架库)、既有查询的精度与召回行为变更,以及查询库(`ql/

gitblog_00066的博客 402

SpringBoot配置文件迁移Nacos完整指南:从拆分到动态刷新

配置管理是微服务架构中的基础能力,而配置文件作为应用运行的关键载体,在传统SpringBoot项目中常与代码耦合、环境隔离困难、变更依赖重新发布。Nacos作为动态服务发现与配置管理平台,通过将配置集中化存储并提供实时推送,实现了配置与应用生命周期的解耦。其核心原理在于客户端通过长轮询监听配置变更,服务端基于命名空间和分组实现环境隔离,结合@RefreshScope注解和bootstrap.yml引导加载,即可在不重启应用的情况下动态更新业务开关、阈值等参数。这一机制在多个实例、频繁变更、多环境隔离等微服务

weixin_33805743的博客 320

JAVA找出哪个类import了不存在的类

未来几周,市场将向第三方开发者开放,届时开发者可以在 nativephp.com 上架自己的插件,甚至可以销售自己开发的插件。只需运行 native:jump Artisan 命令,打开手机上的 Jump 应用扫描二维码,Laravel 应用就会直接加载到设备上,连接到本地开发服务器。Jump 是一个安装在手机上的应用(支持 Android 和 iOS),可以在真机上测试 NativePHP 应用,无需编译任何东西,也不需要开启开发者模式。此前版本中集成在核心包里的原生功能,现在被拆分成独立的插件。

Pb49176Ef的博客 228

Spring Boot配置迁移到Nacos:从本地到动态刷新全程实操指南

在微服务架构中,配置与部署包耦合是引发环境混乱和发布事故的常见源头。配置中心通过将配置集中化并与运行时分离,从根本上解决了多实例、多环境下的配置一致性问题。Nacos作为主流配置中心,利用命名空间隔离环境、DataId定位配置、长轮询实现动态刷新,让配置变更无需重启即可生效。对于Spring Boot应用,从本地文件迁移到Nacos不仅是搬运文件,更涉及依赖选型、接入方式(bootstrap或spring.config.import)以及敏感信息治理等关键决策。本文基于实战经验,梳理迁移前规划、版本兼容、配

weixin_33851604的博客 371

Vite 3.0 发布解析:冷启动优化、import.meta.glob 重写与 ESM SSR 构建革新

Vite 3.0 是 Vite 团队在 v2 发布 16 个月后推出的年度大版本,这篇技术文章基于官方发布公告 [announcing-vite3.md](https://link.gitcode.com/i/8d591f151f8b7382904a35819759a1db),完整梳理 v3 的发布背景与全部技术变更:开发体验升级(CLI、默认端口 5173/4173、WebSocket 连接策略

gitblog_00086的博客 1025

Python微服务架构实战:拆分、通信与Consul注册发现

微服务架构作为应对复杂业务场景的主流设计范式,通过将单体应用拆分为多个独立部署的服务单元,有效提升了系统的可伸缩性与故障隔离能力。其核心原理涉及服务边界的合理划分、服务间通信机制的选择以及服务实例的动态注册与发现。在工程实践中,服务拆分需遵循领域驱动设计的限界上下文原则,通信方式可基于REST、gRPC或消息队列,而注册中心如Consul能动态管理服务地址,保障调用链路的可靠性。对于Python开发者,结合FastAPI与Consul可以快速搭建微服务骨架,实现服务注册、健康检查与客户端负载均衡。本文以用户

weixin_33859844的博客 425

Python模块化实战:从import机制到包设计,告别代码混乱

在软件开发中,代码组织能力往往决定了项目的可维护性与扩展边界。模块化作为Python工程实践的核心思想,通过将一个复杂系统拆分为职责单一、接口清晰的文件或包,有效解决了代码复用、命名冲突与协作难题。深入理解import机制、sys.path搜索顺序以及命名空间隔离原理,是避免ModuleNotFoundError和循环导入等常见陷阱的关键。从单文件脚本到包结构设计,模块化不仅支撑了爬虫、多进程、协程等典型场景的高效开发,也为硬件驱动等嵌入式应用提供了清晰的分层抽象。Python模块的合理划分与动态导入技术,

weixin_34184561的博客 292
上一篇: webpack中动态import()打包后的文件名称定义
javao_0
博客等级 码龄12年 6粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值