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

如何基于文件最后更新日期刷新阿里云CDN缓存?解决Blazor WASM缓存崩溃

阿里云CDN通配符域名下Blazor WASM更新缓存问题解决方案

一、从缓存规则根源规避问题

Blazor WASM的静态资源(如_framework下的文件)自带哈希命名,只有index.html这类入口文件会重复命名,针对性配置缓存策略:

  • 给index.html设置0缓存时长(或5分钟短缓存),强制每次请求回源拉取最新版本
  • 对带哈希的资源(*.dll.gz、*.js等)设置30天长缓存,哈希变化才会更新,不会触发缓存冲突

这种方式无需频繁手动刷新,从配置层面减少缓存问题。

二、合法批量刷新通配符域名

阿里云CDN不支持复杂正则,但支持官方规定的*通配符,直接用以下格式刷新:

  • 所有子域名的入口文件:https://*.xxx.com/index.html
  • 所有子域名的框架资源:https://*.xxx.com/_framework/*
    注意:*只能用在域名或路径的分段位置,不能混合其他正则字符,这是平台允许的合法写法,之前的正则格式不符合规则所以报错。

三、自动刷新:OSS触发器+函数计算配置修正

按以下步骤配置自动刷新:

  1. 创建函数计算服务:选Python/Node.js运行环境,创建空白函数
  2. 编写刷新CDN的函数代码(Python示例):
    import json
    import aliyunsdkcore
    from aliyunsdkcdn.request.v20180510.RefreshObjectCachesRequest import RefreshObjectCachesRequest
    
    def handler(event, context):
        # 解析OSS触发事件,获取更新文件路径
        event_obj = json.loads(event)
        oss_info = event_obj['events'][0]['oss']
        object_key = oss_info['object']['key']
        
        # 根据OSS存储结构生成CDN刷新路径,按需调整
        sub_domain = object_key.split('/')[0]  # 假设OSS目录名对应子域名
        refresh_url = f"https://{sub_domain}.xxx.com/{object_key}"
        
        # 初始化CDN客户端(需配置RAM权限:AliyunCDNFullAccess)
        client = aliyunsdkcore.client.AcsClient('<你的AccessKeyId>', '<你的AccessKeySecret>', 'cn-hangzhou')
        request = RefreshObjectCachesRequest()
        request.set_accept_format('json')
        request.set_ObjectPath(refresh_url)
        request.set_RefreshType("File")
        
        # 发送刷新请求
        response = client.do_action_with_exception(request)
        return json.loads(response)
    
  3. 配置OSS触发器:
    • 进入函数计算的触发器管理,添加OSS触发器
    • 关联目标OSS Bucket,触发事件选PutObject和DeleteObject
    • 设置触发前缀(如_framework/或index.html,只监听需刷新的文件)
  4. 配置RAM权限:给函数计算服务角色添加AliyunCDNFullAccess权限,确保能调用CDN刷新接口

四、Blazor WASM打包优化

发布时确保启用静态资源哈希(默认已开启),更新后的资源文件名会随内容变化,CDN会自动拉取新文件,仅需刷新index.html即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 15:52:34