3.15 四阶段-远程文件

子任务项 完成日期 耗时 备注
1.技术调研 3.7-3.15 ---- 1.采用webpack的cache缓存和tree-shaking等特性来优化代码 2.采用webpack5的模块联邦来提供远程文件.
2.最终呈现的效果是, 用户拿到一个轻量的客户端,相当于是一个浏览器. 从服务器拿页面和文件. 我这边只需要更新服务器上的文件即可.
同时,文件会被拆分成公共部分和独有部分. 公共部分即三个软件共同所用, 包括自动回复配置模块,复刷配置模块,工具函数等,减少维护成本. 独有部分即专门的寻找dom和执行任务部分.
2.客户端改造成壳子, 页面和文件都从远程服务器拿 ,页面和文件都采用缓存技术,加上hash值,以省流量 3.15 ---- ----
3.1 改造utils.js部分,即右侧配置部分, 拆成公共部分和独有部分, 公共部分供其他软件使用. 3.16 ---- ----
3.2 改造webview-utils.js部分,即寻找dom部分和执行部分, 拆出公共部分和独有部分,公共部分供其他软件使用 3.16~3.18 ---- ----
4.改造智联和58成远程文件模式,并测试 3.19~3.20 ----

探索类工作,总报价4k

收:2000+2000

3.27

  1. 安装依赖
    npm i clean-webpack-plugin css-loader css-minimizer-webpack-plugin html-webpack-plugin mini-css-extract-plugin style-loader terser-webpack-plugin webpack webpack-cli webpack-dev-server webpack-obfuscator -D

  2. 配置webpack.lib.dev => 作为lib 生成各种远程文件,开发环境
    配置webpack.lib.prod => 作为lib 生成各种远程文件,生产环境
    配置webpack.config.host.dev => 作为host 接收远程文件,开发
    配置webpack.config.host.prod => 作为host 接收远程文件,生产
    改造index.html => 把页面都放到vue组件中

  3. 打包utils => utils改造成远程组件
    把依赖项拆出去
    采用项目中的依赖项.

  4. 打包webview.utils

  5. 执行联邦模块

  6. 考虑hash的应用

3.30

  1. 缓存问题还没解决 解决
  2. 拿最新的dev_boss跟现在的分支比较 解决
  3. main.js中的 tokenMap删除 解决
  4. 登陆后,会立马执行心跳. 登录设置当前卡密 和 执行心跳应该间隔一定时间 解决
  5. 研究怎么显示pc版和普通版. 解决
  6. 发版清空重置操作,要保留下来 解决
  7. 所有html文件要整合到utils中

3.31
1.main.js整合成远程文件 失败

4.1

  1. ctrl+r 普通刷新,即根据缓存协议去获取文件
    ctrl+shift+r 强制刷新,即强制获取所有文件
  2. 默认情况下,第一次请求文件,浏览器会默认设置cache-control:no-cache,
    没有缓存则直接请求, 有缓存则询问浏览器本地文件是否新鲜, 不新鲜就去再次请求
  3. 接2,没有缓存时直接请求,服务器(nginx)会自动返回etag和last-modified给客户端的文件记录上去.
    以后再次发送请求,浏览器就会用if-none-match和if-since-modified去跟服务器协商缓存
  4. 接3, etag/if-none-match是对last-modified/if-since-modified的补充, 比如文件内容无变化,但周期性更新,或者一秒内多次更新. 这时候etag没变化, last-modified会发生变化. 也就是说etag>last-modified.

控制强制缓存的字段分别是Expires和Cache-Control,其中Cache-Conctrol的优先级比Expires高。

在HTTP/1.1中,Cache-Control是最重要的规则,主要用于控制网页缓存,主要取值为:

  • public:所有内容都将被缓存(客户端和代理服务器都可缓存)

  • private:所有内容只有客户端可以缓存,Cache-Control的默认取值

  • no-cache:客户端缓存内容,但是是否使用缓存则需要经过协商缓存来验证决定

  • no-store:所有内容都不会被缓存,即不使用强制缓存,也不使用协商缓存

  • max-age=xxx (xxx is numeric):缓存内容将在xxx秒后失效

  • must-revalidate :告诉浏览器、缓存服务器,本地副本过期前,可以使用本地副本;本地副本一旦过期,必须去源服务器进行有效性校验。这里可以和no-cache 进行深入探究,想了解的同学们可以去这里

Etag / If-None-Match优先级高于Last-Modified / If-Modified-Since,同时存在则只有Etag / If-None-Match生效。

image.png

https://blog.csdn.net/CRMEB/article/details/122835505
https://blog.csdn.net/qq_17335549/article/details/128630153
https://blog.csdn.net/wsln_123456/article/details/105673820

4.3 获取webview.utils.js, 应该核对远程和本地的文件名,名字一致时则不重写文件 解决

4.6 如何把公共代码拆分出来,这部分变动少,缓存起来.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容