You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tampermonkey引入localhost HTTPS的@require文件仅保存时更新问题

问题原因

这是Tampermonkey的默认正常行为,TM会对所有@require引入的外部资源做永久本地缓存,仅两种场景会触发重新拉取:

  • 你在TM编辑器内修改并保存脚本时,会自动检测头信息变更,重新拉取所有@require资源
  • 脚本的@version版本号提升时,会触发全量资源更新
    普通页面刷新场景下,TM会直接读取本地缓存的@require文件,不会发起新请求,这个设计的初衷是减少重复网络请求,提升脚本加载效率。

可用解决方案

方案1:开发阶段改用动态脚本加载(最推荐,兼容所有浏览器,无特殊设置要求)

不需要在脚本头声明@require,直接在脚本逻辑内动态拉取本地服务的JS文件,每次刷新都自动拉取最新版本:

// ==UserScript==
// @name            myName
// @description     myDescription
// @author          robinlarondelle
// @version         0.1
// @namespace       myNameSpace
// @homepage        myHomePage
// @include         *linkedin.com/*
// @icon            https://www.google.com/s2/favicons?domain=linkedin.com
// @grant           window.onurlchange
// @grant           GM_xmlhttpRequest
// ==/UserScript== 

// 动态拉取本地开发脚本,时间戳参数避免所有层级的缓存
GM_xmlhttpRequest({
  method: 'GET',
  url: 'https://localhost:3000/public/myScript.user.js?t=' + Date.now(),
  onload: (res) => {
    // 开发环境直接执行即可,正式上线前再把代码打包后替换为@require引入
    eval(res.responseText);
  }
});

这个方案不需要修改任何浏览器或TM的全局设置,多开发者协作也不会有浏览器兼容性问题。

方案2:修改TM全局设置关闭@require缓存

如果不想改脚本逻辑,可以直接修改TM的配置:

  1. 打开TM管理面板,点击右上角「设置」
  2. 滚动到页面最底部,把「配置模式」切换为「高级」
  3. 找到「外部资源」分类,将「缓存@require和@resource」选项修改为「不缓存」
    该方案是全局生效,开发完成后建议改回默认设置,避免影响其他正常脚本的加载速度。

内容的提问来源于stack exchange,提问作者Robin La Rondelle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 15:09:05