ionic3 懒加载在微信上缓存的问题

1.懒加载是什么?css

    在ionic2中全部的组件、模块、服务、管道等都堆积在app.module.ts模块中,在页面初始化的时候会一次性加载全部的资源,致使资源过大,页面渲染缓慢,也致使app.module.ts混乱,不美观,不易维护,不适用于结构繁多、业务复杂的项目。html

   懒加载的出现,使得在跳转到对应页面的时候加载对应页面的js、css、html,这样每一个页面都是一个模块,只有在须要的时候才会加载,大大缓解了首屏的压力。ios

2.懒加载的使用:npm

  https://ionicframework.com/docs/api/navigation/IonicPage/json

3.实战项目的结构:api

  

 

  app.module.ts中并无导入任何页面模块或申明页面组件。每一个页面都应用了一个懒加载模块。直接经过push导入模块就能够了。浏览器

 4.打包后的结构:缓存

  

   build文件下的js文件是每一个页面懒加载编译后的js,跳转到对应页面才会引用对应的js文件,能够在控制台中network中观察。服务器

5.问题来了!app

  index.html

  

  index.html文件中引用的js加版本号可有效清除对应js 的缓存。

  但由于build下的一堆数字js是系统编译后自动生成的,无法加版本号,致使被浏览器或服务器缓存。

  出现一个状况:man.js、vendor.js、polyfills.js是请求最新的,build下的js从缓存中读取,因此项目在跳转对应页面,加载引用的js时,会找不到。

6.花式尝试方法

  服务器不作缓存,无效。

  找出页面模块编译后引用js的地方,解决了页面应用js的问题,但致使polyfills.js报错,混淆的代码,已经没有了可读性。

  使用meta不作浏览器缓存,无效

 

7.解决办法,去掉懒加载,使用首屏所有加载,混淆代码,极致压缩。

  网上不多有对应的资源,由于ionic3基本上用来作app开发,资料不多。由于已经上了正式服,无奈要赶忙解决,所有去掉了懒加载。

  去掉懒加载后的打包

  

   只剩下暴露在index.html中引用的js了,加版本号可解决缓存。

8.自动化混淆代码,每次打包修改文件名,达到清除缓存的做用

  

  npm install map-replace -D
  npm install hashmark -D

  package.json scripts加:

  

  "hashcb": "hashmark -l 8 -r --cwd www/build \"*.{js,css}\" {name}.{hash}{ext} | map-replace -m \"<[^>]+>\" www/index.html",
  "dist": "npm run clean && shx rm -rf www/* && npm run build --prod && npm run hashcb && workbox injectManifest"

  

  打包: npm run dist

  取www/目录下的文件,放弃ionic cordobva build browser --prod 的方式。

9.后续跟进懒加载缓存问题的解决,问题主要仍是在ios苹果端的强缓存。。。。

相关文章
相关标签/搜索