V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
csp318
V2EX  ›  Python

开发阶段的后台管理系统, js 存在变动,如何检测到 js 内容变动,改变 js 文件名

  •  
  •   csp318 · 2019-07-04 14:28:11 +08:00 · 2739 次点击
    这是一个创建于 1729 天前的主题,其中的信息可能已经有所发展或是发生改变。

    flask--> 使用者不知清缓存,会导致页面部分数据不正确或者没有

    解决方法一: 改变静态文件名称,与上次名字不一致。缺点:有时候开发者会忘记,操作麻烦,让开发者精力集中在业务上。

    方法二: 听说有个 gulp 可以管理静态文件,具体教程各位大佬有?

    方法三(主要想要这种方法): 有 python 或者 flask 相关的包,来管理这些静态文件?

    31 条回复    2019-07-05 09:55:01 +08:00
    shanlan
        1
    shanlan  
       2019-07-04 14:32:40 +08:00
    我看到别人 JavaScript 的 scr 后面带了?版本号。
    比如现在这个页面,你查看源代码就可以看到;
    <script src="/static/dist/combo.js?v=c60a80c85dcdff5b64f7ce14139b2435" type="text/javascript" defer></script>
    jinksw
        2
    jinksw  
       2019-07-04 14:34:47 +08:00
    js 后面拼时间戳参数就行了
    wdspro
        3
    wdspro  
       2019-07-04 14:36:30 +08:00
    webpack 啊
    mcfog
        4
    mcfog  
       2019-07-04 14:40:03 +08:00
    所以开发阶段为什么会有使用者?
    VDimos
        5
    VDimos  
       2019-07-04 14:41:07 +08:00 via Android
    你们没用 webpack ?
    palmers
        6
    palmers  
       2019-07-04 14:43:21 +08:00
    如果没有用 webpack 可以直接在后面添加时间戳 那每次加载 js 都是最新的 获取找找其他的类似 JSLoader 之类的工具
    csp318
        7
    csp318  
    OP
       2019-07-04 14:45:06 +08:00
    是供公司内部使用的,运营边使用边提出需求
    csp318
        8
    csp318  
    OP
       2019-07-04 14:45:53 +08:00
    @VDimos 没有用过
    csp318
        9
    csp318  
    OP
       2019-07-04 14:47:06 +08:00
    @jinksw 那岂不是我说的第一种方法,这种方法不好操作,太繁琐,想一劳永逸
    gz911122
        10
    gz911122  
       2019-07-04 14:47:27 +08:00
    webpack 了解一下
    csp318
        11
    csp318  
    OP
       2019-07-04 14:49:34 +08:00
    @gz911122 有 python 相关的包?
    wwwz
        12
    wwwz  
       2019-07-04 14:50:20 +08:00
    webpack 和 gulp 都行,原理就是自动帮你改静态文件名。
    csp318
        13
    csp318  
    OP
       2019-07-04 14:55:19 +08:00
    @wwwz 网上资料大把,但是相关具体操作文档难找,请问您有相关资料?
    learnshare
        14
    learnshare  
       2019-07-04 14:56:24 +08:00
    gulp 也行
    jecshcier
        15
    jecshcier  
       2019-07-04 15:00:11 +08:00 via iPhone
    @mcfog mc 牛逼
    Caballarii
        16
    Caballarii  
       2019-07-04 15:03:13 +08:00
    请求后面都带随机数,每次都强刷好了
    2805408253
        17
    2805408253  
       2019-07-04 15:10:12 +08:00
    js url 加一个时间戳参数就可以了,作用是每次都会请求最新的 js 文件。
    例如: 1.js?timestamp=2123122232323
    wednesdayco
        18
    wednesdayco  
       2019-07-04 15:21:42 +08:00
    地址后加 search 串可穿透缓存
    csp318
        19
    csp318  
    OP
       2019-07-04 15:23:31 +08:00
    @wednesdayco <script src="/static/dist/combo.js?v=c60a80c85dcdff5b64f7ce14139b2435" type="text/javascript" defer></script> 这样?就是问号后面随意写?
    LiMengBo
        20
    LiMengBo  
       2019-07-04 15:26:25 +08:00
    直接加随机字符串时间戳也可以
    wednesdayco
        21
    wednesdayco  
       2019-07-04 15:34:07 +08:00
    @csp318 随便写就算你在?后面写个小说应该都没问题。[doge]
    gz911122
        22
    gz911122  
       2019-07-04 15:34:23 +08:00
    @csp318 webpack 是个工具 不是包
    limuyan44
        23
    limuyan44  
       2019-07-04 15:42:12 +08:00 via Android
    只是内部用,你搞个时间戳就行了,没必要搞那么麻烦,解决问题不需要 1 分钟
    zekee
        24
    zekee  
       2019-07-04 15:44:29 +08:00
    不写的话,你的 js 文件被缓存到本地了,就不会重新加载了
    写了以后,你的 js 文件每次都不一样,都会重新加载
    webpack 自动加
    fengbjhqs
        25
    fengbjhqs  
       2019-07-04 16:08:19 +08:00
    叫他 刷新用 ctrl+f5

    webpack 在你电脑打开以后,如果在局域网可以访问你的 ip,

    如果不在一个局域网, 可以用内网穿透,不过没有必要

    自己找个地方搭建个上传不就可以了, 告诉他这个就是开发环境
    play78
        26
    play78  
       2019-07-04 16:18:45 +08:00
    用 nginx 代理一下,设置 expires = -1 表示浏览器不缓存即可。
    play78
        27
    play78  
       2019-07-04 16:19:21 +08:00
    geniusmyn
        28
    geniusmyn  
       2019-07-04 17:14:36 +08:00
    @wdspro
    @VDimos
    @palmers
    @wwwz webpack 咋设置?各位大佬
    lscho
        29
    lscho  
       2019-07-04 17:25:09 +08:00   ❤️ 1
    ctrl+F5 能实现的事非得搞出点其他东西。。。路径后面加时间戳也能实现的东西非得搞出点其他东西。。。webpack 和 gulp 都能实现的东西,百度搜一下就知道了,人家都回复你了,还得问具体咋设置
    lostpupil
        30
    lostpupil  
       2019-07-04 17:52:34 +08:00
    abc.js => abc-flsadjfasldkfjaslkdjfads.js
    加上一串奇怪的 hash 就行了。
    基本上 webpack gulp 这些东西 build 时候都可以给你加上一串 hash 的。
    然后 你需要做的就是在 前端页面 动态的修改 script 标签里面的 引用。
    keventseng
        31
    keventseng  
       2019-07-05 09:55:01 +08:00
    简单直接在静态文件后增加时间戳,毕竟是内部使用。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4128 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 05:26 · PVG 13:26 · LAX 22:26 · JFK 01:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.