vue项目部署优化问题

前言

使用vuereactangular等技术开发过程中,我们都会遇到以下问题:

  1. 首屏加载慢(这个单页面原因引起的, 如果真的很在乎,可以考虑服务端渲染)

  2. 每一次更新都需要清除浏览器缓存才能看到效果(经常被测试吐槽)

这两个问题可以从很多方面进行优化,今天我就从前端页面部署阶段来优化一下这两个问题。PS:以下内容都基于vue-cli3+

前端页面文件缓存方案

vue-cli3打包说起

路由使用按需加载后,打包生成的文件,每一个路由页面都对应一个jscss文件,入口main.js及其依赖则打包成了app.jsapp.css,公共依赖都放到了chunk-vendors.js

vue-cli3打包后的dist/js文件夹:

可以看到,打包生成的js/css/img等文件的文件名都带有hash值,当源文件内容改变时,重新打包后对应的文件hash值也会改变。举个栗子,我们修改了about.vuejs的内容,重新打包时about.jshash值会改变,以及依赖about.vue的文件app.jshash值也会改变,而其他没有修改的文件,打包后的hash值都不会改变。

我们知道,文件名带hash是为了消除缓存带来的影响的,但是所有文件都不缓存肯定不是一个很好的解决方案。

vue-cli3打包生成的文件名带hash值的作用

为了缓存的最优体验

我们先来简单回顾下http缓存的知识(参考MDN:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Caching_FAQ):

  1. HTTP1.0 是通过Expires(文件过期时间)和Last-Modified(最近修改时间)来告诉浏览器进行缓存的,这两个字段都是 UTC 时间(绝对时间)。Expires 过期控制不稳定,因为浏览器端可以随意修改本地时间,导致缓存使用不精准。而且 Last-Modified 过期时间只能精确到秒。

  2. HTTP1.1 通过Cache-Contorl和 Etag(版本号)进行缓存控制。浏览器先检查 Cache-Control,如果有,则以 Cache-Control 为准,忽略 Expires。如果没有 Cache-Control,则以 Expires 为准。

Cache-Control 除了可以设置 max-age(相对过期时间,以秒为单位)以外,还可以设置如下几种常用值:

  • public,资源允许被中间服务器缓存。浏览器请求服务器时,如果缓存时间没到,中间服务器直接返回给浏览器内容,而不必请求源服务器。

  • private,资源不允许被中间代理服务器缓存。浏览器请求服务器时,中间服务器都要把浏览器的请求透传给服务器。

  • no-cache,不管本地副本是否过期,每次访问资源,浏览器都要向服务器询问,如果文件没变化,服务器只告诉浏览器继续使用缓存(304)。

  • no-store,浏览器和中间代理服务器都不能缓存资源。每次访问资源,浏览器都必须请求服务器,并且,服务器不去检查文件是否变化,而是直接返回完整的资源。

  • must-revalidate,本地副本过期前,可以使用本地副本;本地副本一旦过期,必须去源服务器进行有效性校验。

  • proxy-revalidate,要求代理服务器针对缓存资源向源服务器进行确认。

  • s-maxage:缓存服务器对资源缓存的最大时间。

现在99%的浏览器都是HTTP1.1及以上版本,我们配置缓存就使用Cache-ContorlEtag配合就好了。

那么问题来了,检查文件是否最新不是用etag吗,为什么文件名还需要有hash值?

(1)如果文件名不带hash值,文件版本得用etag来标记,浏览器需要先去检查下是否过期&#

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要将SpringBoot+Vue项目部署到IDEA中,需要执行以下步骤: 1. 在IDEA中导入项目,选择项目根目录下的pom.xml文件,等待依赖下载完成。 2. 在项目中打开终端,进入到Vue项目的根目录下,执行命令`npm install`,等待依赖下载完成。 3. 执行命令`npm run build`,将Vue项目打包生成静态文件。 4. 将打包后的静态文件复制到SpringBoot项目的src/main/resources/static目录下。 5. 运行SpringBoot项目,即可在浏览器中访问部署好的应用程序。 以上就是将SpringBoot+Vue项目部署到IDEA中的步骤。 ### 回答2: 要将Spring Boot Vue项目部署到IDEA中,可以按照以下步骤进行操作: 1. 在IDEA中导入Spring Boot项目:打开IDEA,选择“File” -> “New” -> “Project from Existing Sources”,然后选择项目的根目录,点击“OK”导入项目。 2. 配置Maven依赖:在项目的根目录下找到pom.xml文件,在其中添加所需的依赖项。例如,添加Spring Boot和Vue相关的依赖。完成后,点击"Maven Projects"窗口的"Refresh"按钮,以确保依赖项正确加载。 3. 配置Spring Boot运行配置:点击IDEA右上角的“Add Configuration”按钮,在弹出的配置窗口中选择“Spring Boot”,然后在“Main class”字段中选择Spring Boot项目的主类。点击“Apply”保存配置。 4. 配置前端构建:进入前端项目目录,在命令行中执行`npm install`命令安装项目所需的依赖。然后执行`npm run build`命令,将前端代码编译为静态资源。 5. 配置后端运行端口:可以在Spring Boot项目的配置文件(如application.properties)中配置后端运行的端口号。 6. 启动项目:回到IDEA中,点击顶部工具栏中的“Run”按钮,选择刚刚配置好的Spring Boot运行配置,并点击“Run”。此时,Spring Boot项目将会启动。 7. 访问项目:在浏览器中输入“http://localhost:端口号”(替换为实际的端口号),即可访问部署在IDEA中的Spring Boot Vue项目。 以上是将Spring Boot Vue项目部署到IDEA的简要步骤。具体操作可能因项目结构和依赖库的差异而有所不同,但总体流程是相似的。希望对你有帮助! ### 回答3: 将Spring Boot Vue项目部署到IntelliJ IDEA可以按照以下步骤进行: 1. 首先,确保已经安装好了IntelliJ IDEA,并且具备Spring Boot和Vue.js的开发环境。 2. 打开IntelliJ IDEA,点击“File”菜单,选择“New” > “Project”,在弹出的窗口中选择“Spring Initializr”作为项目类型。 3. 在下一步中,选择你的项目的基本配置,包括项目的名称、位置和语言等。 4. 在“Dependencies”一栏中,选择你需要的Spring Boot和Vue.js的依赖,例如WebVue.js等。 5. 点击“Finish”按钮创建项目,等待IntelliJ IDEA自动生成项目的基本结构。 6. 导入前端Vue项目,在IntelliJ IDEA左侧的Project窗口中,右键点击项目名称,选择“New” > “Module from Existing Sources”,然后选择你的Vue项目所在的文件夹,点击“OK”按钮导入项目。 7. 在导入的Vue项目中,运行“npm install”命令安装所需的依赖。 8. 通过修改Spring Boot项目中的application.properties或application.yml文件来配置后端服务的端口和其他配置。 9. 在IDEA中,找到Spring Boot的启动类,右键点击选择“Run 'XXX'”(XXX代表你的启动类名称),启动后端服务。 10. 在Vue项目中,运行“npm run dev”命令来启动前端开发服务器。 11. 现在,你的Spring Boot Vue项目已经部署到IDEA中了。你可以在浏览器中访问前端开发服务器的URL,查看项目的效果。 通过以上步骤,你可以成功将Spring Boot Vue项目部署到IntelliJ IDEA,并进行开发和调试。如果有需要,你还可以进一步配置和优化项目的开发环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值