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

NextJS 14集成APS Viewer缓存问题:同名模型更新仍显示旧模型

解决APS Viewer同名模型上传后显示旧内容的缓存问题

以下是针对你遇到的缓存问题的具体排查和解决步骤:

一、验证翻译作业是否真正重新生成了模型

你已经设置了x-ads-force: true,但需要确认该请求头是否生效,且翻译作业确实生成了新的模型文件:

  • 调用Model Derivative API的GET /modelderivative/v2/designdata/{urn}/manifest接口,检查返回的manifest中derivatives字段的urn或timestamp是否更新,同时确认status为success、progress为complete,确保新模型翻译完成。
  • 检查createTranslationJob中axios的请求头是否被正确传递,可通过打印请求日志或添加axios拦截器确认x-ads-force未被篡改。

二、强化Viewer端的缓存清除策略

当前的Autodesk.Viewing.HTTP_REQUEST_HEADERS设置时机过晚,且缺少部分缓存控制参数,修改initViewer函数如下:

export const initViewer = async (divId: string) => {
    let viewer: Autodesk.Viewing.GuiViewer3D;

    const getClientToken = await Client.getAccesstoken();
    const tolkenData = getClientToken.data;
    const tolken = tolkenData.access_token;

    // 提前设置请求头,确保Viewer初始化时即生效
    Autodesk.Viewing.HTTP_REQUEST_HEADERS = {
        "If-Modified-Since": "Sat, 29 Oct 1994 19:43:31 GMT",
        "Cache-Control": "no-cache, no-store, must-revalidate",
        "Pragma": "no-cache"
    };

    // 清除Viewer内部缓存
    Autodesk.Viewing.clearCache();

    const options = {
        env: 'AutodeskProduction2',
        api: 'streamingV2',
        accessToken: tolken,
    };

    await Autodesk.Viewing.Initializer(options, () => {
        const config3d = {
            extensions: [],
            // 禁用Viewer内置的缓存项
            disableBimWalkInfoCache: true,
            disableMetadataCache: true
        };
        const htmlDiv = document.getElementById(divId);
        viewer = new Autodesk.Viewing.GuiViewer3D(htmlDiv!, config3d);
        const startedCode = viewer.start();
        if (startedCode > 0) {
            console.error('Failed to create a Viewer: WebGL not supported.');
        }
        console.log('Initialization complete, loading a model next...');
    });
    return viewer!;
}

三、加载模型时强制跳过缓存

在调用viewer.loadDocumentNode加载模型时,添加loadOptions参数强制跳过本地缓存:

// 假设已获取document和viewable对象
viewer.loadDocumentNode(document, viewable, {
    loadOptions: {
        skipPropertyDbCache: true, // 跳过属性数据库缓存
        skipGeometryCache: true,   // 跳过几何数据缓存
        useConsolidatedManifest: false // 禁用合并缓存
    }
});

四、确认存储桶文件已被正确覆盖

检查OSS存储桶中目标文件的ETag是否与新文件一致,确认上传操作确实覆盖了旧文件——部分存储服务默认开启版本控制,若未关闭,同名上传会保留旧版本,导致翻译时仍读取旧文件内容。

内容的提问来源于stack exchange,提问作者Gabriel Jordan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 17:03:13