From 8d584129ece226111eb89322e6cbfa1f52335e26 Mon Sep 17 00:00:00 2001 From: wm <2747639460@qq.com> Date: Fri, 24 Jul 2026 16:31:12 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20gif-player=20=E5=8A=A0=20cache-bust=20?= =?UTF-8?q?=E5=87=BB=E7=A9=BF=E5=BE=AE=E4=BF=A1=20GET=20=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - config.js 新增 MEDIA_CACHE_BUST 常量,换媒体后改此值即可强制客户端重下 - gif-player _load 给 src 追加 cb 参数,避免覆盖 720 动图后仍显示微信缓存的旧 180 图 --- miniprogram/components/gif-player/gif-player.js | 11 ++++++++--- miniprogram/config.js | 5 ++++- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/miniprogram/components/gif-player/gif-player.js b/miniprogram/components/gif-player/gif-player.js index c82c541..9b23726 100644 --- a/miniprogram/components/gif-player/gif-player.js +++ b/miniprogram/components/gif-player/gif-player.js @@ -1,6 +1,7 @@ // gif-player:微信 组件不播放 GIF 动画(只渲染首帧), // 这里用 Canvas 2D + 纯 JS 解码器(omggif)逐帧绘制,实现真正的动图播放。 const { GifReader } = require('../../utils/vendor/omggif.js'); +const config = require('../../config.js'); Component({ properties: { @@ -41,9 +42,13 @@ Component({ if (this._timer) { clearTimeout(this._timer); this._timer = null; } }, _load() { - const src = this.data.src; - if (!src || this._aborted) return; - // 同一 src 且已解码完成则跳过,避免 attached 与 observer 重复触发 + const raw = this.data.src; + if (!raw || this._aborted) return; + // 击穿微信 GET 缓存:服务器静态文件被覆盖新版本(如重做超分动图)后, + // 旧图仍可能被微信请求缓存导致客户端显示旧图。加固定 bust 参数强制重新下载。 + const sep = raw.indexOf('?') >= 0 ? '&' : '?'; + const src = raw + sep + 'cb=' + config.MEDIA_CACHE_BUST; + // 同一 src(含 bust)且已解码完成则跳过,避免 attached 与 observer 重复触发 if (this._loadedSrc === src && this._reader) return; this._loadedSrc = src; this._clearTimer(); diff --git a/miniprogram/config.js b/miniprogram/config.js index 1af3474..1f250f0 100644 --- a/miniprogram/config.js +++ b/miniprogram/config.js @@ -3,5 +3,8 @@ // 中配置的 HTTPS 合法域名(request 合法域名),否则真机无法发起请求。 // 当前直连服务器 IP(开发期在微信开发者工具中勾选「不校验合法域名」即可联调)。 module.exports = { - BASE_URL: 'http://192.227.237.8:3001' + BASE_URL: 'http://192.227.237.8:3001', + // 媒体资源缓存击穿:服务器静态文件(动图/图片)被覆盖新版本后,旧版可能被微信请求缓存, + // 导致客户端仍显示旧图。换媒体(如重做超分动图)后修改此值即可强制全量客户端重新下载。 + MEDIA_CACHE_BUST: '20260724' };