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

国外对旅游网站的建设百度优化怎么做

国外对旅游网站的建设,百度优化怎么做,永久服务器,在线免费看电视剧的网站本文的目的在于简单的介绍webpack的优化功能配置#xff1a;splitChunks。 webpack5出于“开箱即用”的目的#xff0c;将大部分曾经要使用插件的功能集成到了config配置中#xff0c;因此用户只需要了解如何配置#xff0c;即可达到优化目的#xff0c;其中最常使用接触的…本文的目的在于简单的介绍webpack的优化功能配置splitChunks。 webpack5出于“开箱即用”的目的将大部分曾经要使用插件的功能集成到了config配置中因此用户只需要了解如何配置即可达到优化目的其中最常使用接触的配置是webpack.optimization.splitChunks。 一、拆分方法的比较 参考 Webpack常用知识点 说到拆分往往我们会有以下几个选择 动态引入import()、webpack.entry配置多个入口、 splitChunks拆分抽取公共代码 相比较而言 动态引入的拆分需要对一个个文件单独处理不能整体规划更适合写代码时考虑。配置多个入口大多时候没有此必要而且容易将公共模块重复打包拆分策略不一定好。splitChunks拆分1. 配置在打包时开发过程中可以不考虑。2. 可以整体考虑公共代码比如react / utils等公共包。3. 使用webpack-analyze有利于更具体看到打包后的效果。 二、如何使用 webpack官方文档 详解利用webpack的splitChunk拆分打包文件 splitChunks中提供了一些字段常用的有下列属性其他属性大多时候不需改动 chunks 分为all(推荐)async(默认)initial 区别在于打包时模块的合并策略。 all推荐不论是同步引入还是异步引入都会被合并打包。async和目前我们不设置任何配置的情况相同同步引入的模块会被一起打包而动态进入的模块是自动拆分到另一个包中。initial同步引入的模块会被合并抽取成新的包而异步引入的代码会被拆分成另一个包比如a.js和b.js一个动态引入react一个同步引入react这时候打包出来的就是vendors-react同步、react异步两个react包而不会合并这样就造成了浪费。 minSize 最小尺寸默认是30Kdevelopment 下是10k设置的越大满足该尺寸的chunk 数就会变少针对于提取公共 chunk 的时候不管再大也不会把动态加载的模块合并到初始化模块中当这个值很大的时候就不会做公共部分的抽取了。 minChunks 如果一个模块被多个chunk所引用的次数达到了minChunks指定的次数那么这个模块就会被打包成一个单独的chunk。但是因为我们的项目只有一个入口文件Webpack只会生成一个chunk这时minChunks就没有作用了因为打包结果只有一个chunk不需要进行代码分离。 maxInitialRequests 参考https://www.cnblogs.com/kwzm/p/10316217.html maxInitialRequests是splitChunks里面比较难以理解的点之一它表示允许【单个】入口并行加载的最大请求数之所以有这个配置也是为了对拆分数量进行限制不至于拆分出太多模块导致请求数量过多而得不偿失。 这里需要注意几点 入口文件本身算一个请求如果入口里面有动态加载得模块这个不算在内通过runtimeChunk拆分出的runtime不算在内只算js文件的请求css不算在内如果同时又两个模块满足cacheGroup的规则要进行拆分但是maxInitialRequests的值只能允许再拆分一个模块那尺寸更大的模块会被拆分出来 cacheGroups cacheGroups缓存组是 webpack splitChunks 最核心的配置splitChunks的配置项都是作用于cacheGroup上的也就是cacheGroups缓存组可以继承和覆盖来自 splitChunks.* 的任何选项。 接下来我们也是主要使用这个配置去拆分合并代码。 priority 拆分优先级webpack首先会遍历依赖生成依赖树然后对单个模块打包最后再拆分合并。这个属性可以决定一个模块同时属于多个合并规则的时候将合并进哪个文件内。 reuseExistingChunk 如果该chunk包含的modules都已经另一个被分割的chunk中存在那么直接引用已存在的chunk不会再重新产生一个 test 当test为函数时返回true/false并且接收两个参数module和chunks module每个模块打包的时候都会执行test函数并且传入模块 module 对象module 对象包含了模块的基本信息例如类型、路径、文件 hash 等 chunks是当前模块被分到哪些chunks使用module 跟 chunks 关系可能是一对一或者多对一。 module.exports {//...optimization: {splitChunks: {cacheGroups: {vendors: {test(module, chunks) {//...return module.type javascript/auto;}}}}} };三、具体实现 修改完配置之后我们可以通过webpack-analyze看到打包出来的具体效果衡量自己的优化程度。 在next中就是如下配置 const withBundleAnalyzer require(next/bundle-analyzer)({enabled: process.env.ANALYZE true, });module.exports withTM(withBundleAnalyzer(withImages(withAntdLess(nextConfig))));npm run analyzer一般而言没有改动过的Next自带的配置如下从next.config中打印出来的数据 {emitOnErrors: true,checkWasmTypes: false,nodeEnv: false,splitChunks: {chunks: [Function: chunks],cacheGroups: { {framework: {chunks: all,name: framework,test: [Function: test],priority: 40,enforce: true},lib: {test: [Function: test],name: [Function: name],priority: 30,minChunks: 1,reuseExistingChunk: true} },maxInitialRequests: 25,minSize: 20000},runtimeChunk: { name: webpack },minimize: true,minimizer: [ [Function (anonymous)], [Function (anonymous)] ] }想要增加分包策略只需要像如下代码在next暴露出的config中配置 webpack(config, { webpack, isServer }) {try {if (!isServer) {const cacheGroups config.optimization.splitChunks.cacheGroups;console.log(cacheGroups)}} catch (e) {console.error(webpack cacheGroups error: ,e);}return config;}我的主要目的在于优化项目的首包也就是app.js所以主要查看的也是这个包。 首先打印出项目的打包文件如图假装有图   分析也许是受限于maxInitialRequests或者其他的原因react / mobx等包都没有拆分出app的包须知这种固定依赖往往可以放在CDN中很久不变动要是每次都跟着app包重新下载不利于CDN利用和首屏渲染。 故第一份优化配置如下 拆分公共依赖库antd / mobx / react / moment / lodash等等当然后续还可以拆分其他的模块。 const cacheGroups config.optimization.splitChunks.cacheGroups;// 1.mobxcacheGroups.antd {name: antd,test: /[\\/]node_modules[\\/](antd|ant-design)[\\/]/,enforce: true,chunks: all,};// 2.工具类cacheGroups.vendors {name: vendors,test: /[\\/]node_modules[\\/](mobx|axios|lodash|moment)[\\/]/,enforce: true,chunks: all,priority: 20,};// 3.utilsconfigcacheGroups.utils {name: utils,test: /[\\/]src[\\/]utils[\\/]/,enforce: true,chunks: all,priority: 20,};拆分后可见打出来三个新的包antd 、vendors、utils项目的整体大小少了0.6M如果觉得antd的包过大也可以再使用maxSize限制或者细化test正则。 接下来再分析app的页面看到某个模块下引入的配置文件基本上占用了一半的大小这个配置文件是在一个大的activity文件夹下的多个小活动中的config.js。这是因为之前为了在服务器端渲染的时候能够获取到配置数据所以在_app.js引入造成的问题随着后续的需求展开这里的影响可能会越来越大因此必须得想个办法拆分出去。 想要把这一部分的包拆分出去一开始考虑了几个方法 import动态引入分割。cacheGroup中添加代码分割的规则。不能直接使用test是因为文件夹下有很多文件一旦使用test会把所有文件都打包进来不符合要求把这部分配置集中到另一个文件夹内这样可以使用test去识别分割。以上办法都不行的话就把配置代码从_app中移出来放到组件里面去动态处理生成。 方法一 一开始写了一个类似下方这样的动态引入代码但是在mobx数据初始化时才会进行下载无法获取到配置数据。 await ConfigRes.then((Config) {const ConfigResModule ConfigRes.default; });方法二 经过尝试最后把test的名称正则改成只识别配置文件夹下的config.js文件。 优先级不能填太高优先级填的高的话activity下方所有活动的文件都会被打包进来有使用和没有使用的文件都放在了一起这样反而无法达到减负的目的。因此优先级填最低这样可以使“未被划分进其他包、最后只能留在app.js包”中的这一些activity数据抽取出来。 再做一层保险设置maxSize以免以后配置了太多活动导致这个包过大。 cacheGroups.activity {name: activity,test: /[\\/]src[\\/]activity[\\/].*[\\/]config.js/,enforce: true,chunks: all,priority: -30,maxSize:200000, };方法三 方法二其实比较繁琐但是这样做可以使开发可以不去关注打包信息只关注自己要开发的代码而不用把代码挪过来挪过去。 方法四 方法二已实现后暂时没有考虑。 四、数据比对 需要做性能测试。 五、安全考虑 可能要经过压测和稳定性测试以及性能测试看看是不是真的有效。
http://www.pierceye.com/news/863287/

相关文章:

  • 网站区分治疗早射最有效的方法是什么
  • 市体育局网站 两学一做ip详细地址查询工具
  • 网站找图片做海报侵权开发一个oa系统多少钱
  • 网站下载链接打不开外国网站建站
  • 与众不同的网站风控网站开发
  • 哈尔滨的网站设计门户网站建设招投标
  • 如何用wordpress制作网站运城公司做网站
  • 园林景观网站模板做企业商城网站
  • 医疗网站优化怎么做农村自建房设计图效果图
  • 网站建哪家好佛山seo网站排名
  • 做珠宝网站价格多少html5手机网站开发经验
  • dede网站后台合肥网站建设行情
  • 做动漫网站侵权吗途牛网网站建设评价
  • 域名到期对网站的影响做美缝在哪个网站接单
  • 网站建设技术网站刚做网站和搜出来的不一样
  • 营销型网站建设集装箱液袋如何做做网站
  • 刘晓忠 网站建设手机网站绑定域名是什么意思
  • 东莞网站建设 包装材料汅app下载大全2022
  • 湖南平台网站建设找哪家设计师培训班多少钱
  • 网站代码素材重庆渝发建设有限公司官网
  • 网站标题能改吗加强档案网站建设
  • 2016网站设计龙岩微信网站建设
  • 梅州建站规划网站建设从零到精通.pdf
  • 商业机构的网址网站关键词优化费用
  • 企业网站建设中期报告模板微信小程序开发需要哪些技术
  • 裕顺网站建设上海房价2022年最新房价
  • 百度联盟做网站赚钱制作网页完整步骤
  • 化妆品网站建设规划书范文h5网站建设h
  • 增城低价网站建设app制作公司哪个好
  • 网站建设制作苏州自己做网站能赚钱吗2018