V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
helee9199
V2EX  ›  程序员

有没有办法在网页上做一个按钮 达到清理缓存

  •  1
     
  •   helee9199 · 2023-05-11 13:57:59 +08:00 · 4161 次点击
    这是一个创建于 555 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我只知道清理缓存,要么装插件,要么进设置里去清 但是有些情况 user 不会。 想问一下, 有没有什么 api 可以清理缓存 做一个按钮,点击以后就能清理。

    36 条回复    2023-05-12 16:44:55 +08:00
    helee9199
        2
    helee9199  
    OP
       2023-05-11 14:01:03 +08:00
    @taogen 可以理解为 user 是老年人 不知道这些东西
    现在就想给他一个按钮,点了清缓存。
    wolfie
        3
    wolfie  
       2023-05-11 14:03:46 +08:00
    这届用户不行,连缓存都不会清理,导致功能不可用。
    crab
        4
    crab  
       2023-05-11 14:04:18 +08:00
    unclemcz
        5
    unclemcz  
       2023-05-11 14:05:03 +08:00 via Android
    换个思路,前端禁止缓存,引入静态资源的时候都加随机版本号。
    ovtfkw
        6
    ovtfkw  
       2023-05-11 14:06:28 +08:00
    alter 之
    SaltyLeo
        7
    SaltyLeo  
       2023-05-11 14:07:19 +08:00
    user 应该知道他需要清除缓存才能继续下一步吧。
    如果是 chrome ,可以在你的页面上设置一个按钮,链接为:chrome://settings/clearBrowserData ,点击后会弹出确认清除浏览数据的页面,点击清除数据即可。
    gongxuanzhang
        8
    gongxuanzhang  
       2023-05-11 14:09:31 +08:00   ❤️ 11
    function clearCache(){
    alert('清理缓存成功')
    }
    hua123s
        9
    hua123s  
       2023-05-11 14:10:18 +08:00   ❤️ 2
    Al0rid4l
        11
    Al0rid4l  
       2023-05-11 14:10:45 +08:00
    清理你自己页面所在域的当然可以, 但如果你想要清整个浏览器的那会跨域, 毕竟不能让你一个按钮就把其他网站购物车都给清了
    helee9199
        12
    helee9199  
    OP
       2023-05-11 14:22:00 +08:00
    @unclemcz 屎山+快 20 年的老项目,很多方式不好实现,搞个按钮清缓存最直接了
    @Al0rid4l 这个无所谓,清当前页或全部没差。医院用。

    @oott123 @hua123s 谢谢我看看这个
    knva
        13
    knva  
       2023-05-11 14:51:06 +08:00
    alert("清理成功矣")
    bzw875
        14
    bzw875  
       2023-05-11 15:05:43 +08:00
    可以给用户开一个安慰剂,酷炫的动画然后弹出清空完成。但是浏览器不允许范围隐私数据
    shyangs
        15
    shyangs  
       2023-05-11 15:17:42 +08:00
    什麼鬼安慰劑,樓主肯定遇到了快取和新資料不一致的問題。

    就像之前 V2EX 的翻頁報 502 ,https://www.v2ex.com/t/938867

    不想治本的情況,安慰劑還不如治標方案——清 cookie 和清緩存。
    hsfzxjy
        16
    hsfzxjy  
       2023-05-11 15:22:54 +08:00 via Android
    @shyangs 查了下快取,原来是 cache
    opengps
        17
    opengps  
       2023-05-11 15:24:19 +08:00
    你自己写个程序,后台定期执行就行了,不用期待什么人为操作
    pipaseqin
        18
    pipaseqin  
       2023-05-11 15:37:38 +08:00
    左上角设置一块区域连续点击 n 次,出现清理按钮,点击或多少秒不点击则隐藏
    helee9199
        19
    helee9199  
    OP
       2023-05-11 15:53:37 +08:00
    @shyangs 是啊 就这个意思,但是 user 又不会装插件和到设置里去清
    所以我想有什么办法 能达到清理 cookie 和缓存的效果。
    TArysiyehua
        20
    TArysiyehua  
       2023-05-11 16:29:49 +08:00
    @helee9199 你自己代码不能主动清空 cookie 和缓存吗?感觉无压力呀
    krixaar
        21
    krixaar  
       2023-05-11 16:42:38 +08:00
    流程截图放 word 里搞个手册,一个链接放上去就行了。最后加上 IE 怎么重置浏览器的流程,和其他浏览器卸载重装一句话。
    不会操作?找个会的过来按手册就行了。
    cydian
        22
    cydian  
       2023-05-11 17:05:15 +08:00 via Android
    长见识了,第一次看到这个 headers
    qping
        23
    qping  
       2023-05-11 17:10:11 +08:00
    为什么你们要清缓存,不能代码层面解决下缓存问题吗?
    helee9199
        24
    helee9199  
    OP
       2023-05-11 17:12:27 +08:00
    @qping 有些谜之 bug 发版后 A 机器访问 OK ,B 机器访问有问题,让他们清理缓存试试, 清理以后又好了。。。
    qping
        25
    qping  
       2023-05-11 17:16:17 +08:00
    那还是浏览器缓存问题,还是应该在代码层面解决,所有文件都加上版本号
    darkengine
        26
    darkengine  
       2023-05-11 17:33:21 +08:00
    老年人知道缓存是什么吗。。。应该加一个按钮叫“一键解决问题” /doge
    cyningxu
        27
    cyningxu  
       2023-05-11 17:44:50 +08:00
    看了一下,楼主的意思是清文件 cache 和 cookie ?我理解文件 cache 的话不就是加版本号吗? cookie 的话更简单了,所以这个问题是?
    LavaC
        28
    LavaC  
       2023-05-11 19:26:37 +08:00
    遇到过这种情况,给甲方做好了页面,她的电脑访问一直是旧的就以为我们在糊弄她,我们喊了两天 Ctrl+F5 ,也不知道是她没按还是按错了,反正就没刷新到,最后开始开远程帮她按了快捷键。
    paradoxs
        29
    paradoxs  
       2023-05-11 19:36:51 +08:00
    有 1 说 1 , 让客户清缓存这个做法绝对是不对的。

    自己加版本号吧
    BUHeF254Lpd1MH06
        30
    BUHeF254Lpd1MH06  
       2023-05-11 19:44:09 +08:00
    @gongxuanzhang 一看你就没写过真的,我刚入行的时候写 APP ,老板让我加个清除缓存,那时候刚毕业我都不知道该缓存啥还清除缓存,我就写了一个类似的,不过加了一个定时器 loading 一秒哈哈
    Ritr
        31
    Ritr  
       2023-05-11 21:19:02 +08:00
    alert("清除成功“);
    zhaokun
        32
    zhaokun  
       2023-05-12 08:19:08 +08:00 via iPhone
    先搞清楚是什么缓存,如果是前端自己写的缓存那不按钮随便写吗?
    fiveStarLaoliang
        33
    fiveStarLaoliang  
       2023-05-12 10:58:13 +08:00
    private clearCache() {
    // 清除所有数据
    fetch('/', { cache: 'no-cache' })
    fetch('/', { cache: 'reload' })
    window.location.reload()
    }
    fiveStarLaoliang
        34
    fiveStarLaoliang  
       2023-05-12 13:01:34 +08:00
    刚研究了下,代码没作用,再研究研究
    fiveStarLaoliang
        35
    fiveStarLaoliang  
       2023-05-12 15:35:29 +08:00
    我试了下这个办法可以重新加载页面

    private clearCache() {
    // 清除缓存
    if (window.location.href.indexOf('v=') < 0) {
    window.location.href = `/?v=${new Date().getTime()}`
    } else {
    window.location.href = window.location.href.replace(/v=\d+/, 'v=' + new Date().getTime())
    }
    }
    helee9199
        36
    helee9199  
    OP
       2023-05-12 16:44:55 +08:00
    @fiveStarLaoliang 这个看起来只针对当前页吧?
    因为实际碰到的情况是 某个功能里功能异常,清理缓存后正常。
    目前的思路是按#9#10 给的那个 header 思路,在每次登录时清理缓存
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2014 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 16:17 · PVG 00:17 · LAX 08:17 · JFK 11:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.