Weex/Vue项目中静态资源缓存处理.md

目录

  • 一、项目缓存问题
  • 二、浏览器本地缓存
  • 三、解决方案

今年公司技术考察,考察了EMAS平台,从而接触了weex,并且为了进行POC测试,大胆采用weex进行新web项目试点。weex内置了vue框架,整体框架与vue一致,好在刚接触了vue一段时间,因此用起来还算顺手,碰到问题weex官方文档没有的,基本都可以参考vue的文档。

一、项目缓存问题

第一次接触这类前后端完全分离的开发模式,一开始的确是一头雾水,一个多月时间,难点一点一点克服,目前进入项目测试阶段,经常碰到bug修复了,测试人员说他那还存在,一看自己这里是好的,也就知道又是浏览器端缓存没更新了(目前处理缓存是通过手动追加时间串,经常发布代码时会忘加了)。而VUE的项目却没有这个问题,每次发布都会自动生成全新的文件,研究后发现这是vue-cli初始化项目时,自动配置好缓存缓存的处理了,所以参考vue项目的配置修改weex项目配置即可。

二、浏览器本地缓存

浏览器有自己的一套缓存策略(Cache-Control、Pragma、ETag、Expires、Last-Modified),会对静态资源如css、js、图片进行缓存,下次同一请求会优先从浏览器缓存中取,这在很大程度上提升了我们的访问速度,但是也带来了些问题。详见浏览器缓存机制剖析

三、解决方案

1. 手动修改文件名

在项目每次编译后,如有修改js,则更新html中js引用地址,习惯追加时间index.web.js?_v20180628003

// index.html
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>hello world!</title>
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
  <meta name="apple-mobile-web-app-capable" content="yes">
  <meta name="apple-mobile-web-app-status-bar-style" content="black">
  <meta name="apple-touch-fullscreen" content="yes">
  <meta name="format-detection" content="telephone=no, email=no">
</head>
<body>
  <div id="root"></div>
</body>
<script type="text/javascript" src="index.web.js?_v20180628003" defer></script>
<script type="text/javascript" src="vendor.web.js?_v20180628003" defer></script>
</html>

2. 使用webpack自动更新文件名

通过使用 output.filename 进行文件名替换,可以确保浏览器获取到修改后的文件。[hash] 替换可以用于在文件名中包含一个构建相关(build-specific)的 hash,但是更好的方式是使用 [chunkhash] 替换,在文件名中包含一个 chunk 相关(chunk-specific)的哈希。

官方文档:https://webpack.docschina.org/guides/caching

// webpack.config.js
output: {
    path: helper.rootNode(‘./dist‘),
    filename: ‘[name].web.[chunkhash].js‘,
    sourceMapFilename: ‘[name].web.map‘
},

js文件是生成了,还需要动态注入到入口html文件如index.html,这里需要用到插件html-webpack-plugin,html-webpack-plugin插件可根据模板动态生产html文件,并将生成的js动态嵌入html中。

// webpack.conf.js
const HtmlWebpackPlugin = require(‘html-webpack-plugin‘); // output html file
plugins: [
  new HtmlWebpackPlugin({
    template: ‘index.html‘ // 模板文件放在根目录上
  })
]

// 模板文件index.html
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>hello world!</title>
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
  <meta name="apple-mobile-web-app-capable" content="yes">
  <meta name="apple-mobile-web-app-status-bar-style" content="black">
  <meta name="apple-touch-fullscreen" content="yes">
  <meta name="format-detection" content="telephone=no, email=no">
</head>
<body>
  <div id="root"></div>
</body>
<!--将jsbundle动态注入这里-->
</html>

原文地址:https://www.cnblogs.com/vipinchan/p/9265976.html

时间: 2024-11-07 22:21:10

Weex/Vue项目中静态资源缓存处理.md的相关文章

读取项目中静态资源文件下的所有文件,比如是所有图片

请求需要传入文件夹路径 这是后台代码import java.io.File; import java.io.IOException; import java.net.MalformedURLException; import java.util.ArrayList; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpS

变态的静态资源缓存与更新

这是一个非常有趣的 非主流前端领域,这个领域要探索的是如何用工程手段解决前端开发和部署优化的综合问题,入行到现在一直在学习和实践中. 在我的印象中,facebook是这个领域的鼻祖,有兴趣.有梯子的同学可以去看看facebook的页面源代码,体会一下什么叫工程化. 接下来,我想从原理展开讲述,多图,较长,希望能有耐心看完. 让我们返璞归真,从原始的前端开发讲起.上图是一个"可爱"的index.html页面和它的样式文件a.css,用文本编辑器写代码,无需编译,本地预览,确认OK,丢到服

如何在Vue项目中使用vw实现移动端适配

https://www.w3cplus.com/mobile/vw-layout-in-vue.html  原文网址 如何在Vue项目中使用vw实现移动端适配 作者:大漠 日期:2018-01-25 点击:10362 vw Layout 布局 Vue mobile 编辑推荐:使用 Coding.net 搭建静态博客,自定义域名,全站 HTTPS 加密,自动实时部署, 立即托管您的网站! 有关于移动端的适配布局一直以来都是众说纷纭,对应的解决方案也是有很多种.在<使用Flexible实现手淘H5页

vue项目中遇到的那些事。

前言 有好几天没更新文章了.这段实际忙着做了一个vue的项目,从 19 天前开始,到今天刚好 20 天,独立完成. 做vue项目做这个项目一方面能为工作做一些准备,一方面也精进一下技术. 技术栈:vue2 + vuex + vue-router + webpack + ES6/7 + element-ui + vue-baidu-map + i18n + vue-awesome-swiper 做项目时总是有一些思考和踩过的坑,对以后有一定的帮助,今天就来写写做vue项目遇到的那些事. 假如你正准

在vue项目中的axios使用配置记录

默认vue项目中已经安装axios,基于element-ui开发,主要记录配置的相关. axiosConfig.js import Vue from 'vue' import axios from 'axios' import qs from 'qs' import { Message, Loading } from 'element-ui' // 响应时间 axios.defaults.timeout = 5 * 1000 // 配置cookie // axios.defaults.withC

27.Spring-Boot中拦截器中静态资源的处理(踩过坑)以及Spring mvc configuring拓展介绍

一.springboot中对静态资源的处理 默认情况下,springboot提供存放放置静态资源的文件夹: /static /public /resources /META-INF/resources 对于maven项目即就是存在src/main/resources 文件夹下. ? 如图:static文件夹就是springboot中默认的文件夹 在页面中这样写路径<link href="themes/bootstrap.min.css" rel="stylesheet&

.htaccess设置静态资源缓存(即浏览器缓存)

在HTTP标头中为静态资源设置过期日期或最长存在时间,可指示浏览器从本地磁盘中加载以前下载的资源,而不是通过网络加载.这样, 网站加载速度会更快. 下面的代码都需要放到.htaccess中才能生效. 推荐设置过期时间为一个月, 即: max-age=2592000. 通过FilesMatch设置 <FilesMatch ".(flv|gif|jpg|jpeg|png|ico|swf|css|js)$">Header set Cache-Control "max-a

清除nginx静态资源缓存

之前写过一篇如何配置nginx缓存及手动清除缓存的文章: http://www.cnblogs.com/Eivll0m/p/4921829.html 但如果有大量缓存需要清理,手动一条条清理就比较慢了,所以写了个小脚本进行清理,脚本如下: #!/usr/bin/env python # -*- coding: UTF-8 -*- # data:2015-12-08 # author:eivll0m # 脚本用途:清除nginx静态资源缓存 # 使用方法:将要清楚缓存的url粘贴到/app/adm

转:如何在Vue项目中使用vw实现移动端适配

https://www.w3cplus.com/mobile/vw-layout-in-vue.html 有关于移动端的适配布局一直以来都是众说纷纭,对应的解决方案也是有很多种.在<使用Flexible实现手淘H5页面的终端适配>提出了Flexible的布局方案,随着viewport单位越来越受到众多浏览器的支持,因此在<再聊移动端页面的适配>一文中提出了vw来做移动端的适配问题.到目前为止不管是哪一种方案,都还存在一定的缺陷.言外之意,还没有哪一个方案是完美的. 事实上真的不完美