前端静态资源死活缓存不了的排查

发布于 2025-12-11 16:21:22

背景

访问网页,慢,F12抓,发现js等无法浏览器缓存
image.png

排查了原因是:url后v=XX一直在变化。为什么会变化呢?

分析过程

1、找到html页面里引用这个js的地方

   <link rel="stylesheet" media="screen" href="__ADDON__/css/swiper.min.css?v={$site.version}">

打印{$site.version}发现确实每次请求都在变化

2、分析后端control

class Archives extends Base
{
}

找到基类Base

/**
 * CMS控制器基类
 */
class Base extends \think\addons\Controller
{
}

再钻下去 thinkaddonsController,文件在:vendorkarsonzhangfastadmin-addonssrcaddons

/**
 * 插件基类控制器
 * @package think\addons
 */
class Controller extends \think\Controller
{
    protected function _initialize()
    {
        $site = Config::get("site");               
        $this->assign('site', $site);
    }

}

里面有$site的赋值,打印出来,看到version的值确实每次都变化了。但是Config::get("site")只是取值,看不到为什么变化了。

后来AI的帮助下,找到application/common/behavior/Common.php 文件:

if (Config::get('app_debug')) {
    // 如果是调试模式将version置为当前的时间戳可避免缓存
    Config::set('site.version', time());
    // 如果是开发模式那么将异常模板修改成官方的
    Config::set('exception_tmpl', THINK_PATH . 'tpl' . DS . 'think_exception.tpl');
}

原来是config文件里app_debug 为调试模式,导致每次请求都是新的version。

解决办法

把这个值改为false。
image.png

0 条评论

发布
问题