V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
dufu
V2EX  ›  JavaScript

怎样强制浏览器更新 js 文件

  •  
  •   dufu · 2018-06-28 15:01:49 +08:00 · 6150 次点击
    这是一个创建于 2344 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,大家一般都用什么方法强制浏览器更新 js 文件? 比如<script src="my.js?v=100"></script> 在引用的后面加一个类似版本号的标示符( v=100 ), 这样如果更新 my.js 文件,就把 v=100 变成 v=101 之类。

    问题是用什么方法自动做这个事情,有什么框架之类的吗?

    15 条回复    2018-07-13 09:39:45 +08:00
    ragnaroks
        1
    ragnaroks  
       2018-06-28 15:06:29 +08:00
    ?=输出这个会随着编译而自增的版本号
    beastk
        2
    beastk  
       2018-06-28 15:07:00 +08:00 via iPhone
    动态创建 js➕随机
    cuzfinal
        3
    cuzfinal  
       2018-06-28 15:07:23 +08:00
    问你们公司的前端,
    一般都是用 webpack 之类的打包工具,打包后的文件名带上哈希,每次打包都不一样。
    chinvo
        4
    chinvo  
       2018-06-28 15:08:34 +08:00
    webpack 咯,自动打时间戳或者 hash
    liyer
        5
    liyer  
       2018-06-28 15:22:49 +08:00
    document.write("<script src=\"js.js?v=" + Math.random() + "\"><\/script>");
    LeungJZ
        6
    LeungJZ  
       2018-06-28 15:27:38 +08:00
    webpack 每次打包只要文件被修改过,hash 值就变了。
    mokeyjay
        7
    mokeyjay  
       2018-06-28 15:44:44 +08:00
    看样子你们没有在用 Webpack 之类的工具,那么可以这样:开发时直接给 js 后面接个 ?v=time() 即时间戳,强制每次更新。要打包上线了再手动给个固定版本号
    dufu
        8
    dufu  
    OP
       2018-06-28 15:51:18 +08:00
    webpack good !!!!
    谢谢各位!!!
    dufu
        9
    dufu  
    OP
       2018-06-28 15:52:24 +08:00
    项目组还处在蛮荒时代,呵呵~~~~
    Xrong
        10
    Xrong  
       2018-06-28 19:19:47 +08:00
    chrome 开启控制台,然后在设置里勾选 Disable cache (while DevTools is open)
    julyclyde
        11
    julyclyde  
       2018-06-28 20:14:54 +08:00
    @liyer 你这样会击穿 CDN 的
    betulachen
        12
    betulachen  
       2018-06-28 21:07:00 +08:00 via iPhone
    了解一下刷版本号
    qa2080639
        13
    qa2080639  
       2018-06-29 09:13:49 +08:00
    webpack 不缓存 html CDN 缓存 JS CSS
    e8c47a0d
        14
    e8c47a0d  
       2018-07-09 15:00:32 +08:00
    webpack 这类,比如我用 nuxt 里面打包以后,那些有变化的 js 的文件名末尾的 hash 都会变化。
    fan776783
        15
    fan776783  
       2018-07-13 09:39:45 +08:00
    开发的话,把 web 服务器的 expire 设成-1,生产用 webpack 或者 requireJs 的话打包可以直接加 hash 的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3277 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 12:14 · PVG 20:14 · LAX 04:14 · JFK 07:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.