使用Azure CLI部署WebGL应用时Last-Modified异常致缓存失效如何解决?
Azure CLI
az webapp deploy部署WebGL应用缓存异常问题解决 问题现象
- 使用
az webapp deploy部署WebGL应用到Azure后,Chrome等浏览器无法正常缓存静态文件 - 根因:文件的
Last-Modified响应头被设置为未来时间——本地时区(如GMT+3)的时间被当作GMT时间处理,比如本地13点部署后,响应头显示GMT 13点(比实际UTC时间早3小时,属于未来时间) - 表现:浏览器因
Last-Modified为未来值,每次请求都会重新加载文件;等待3小时后时间变为过去值,缓存自动恢复正常 - 验证:手动通过PowerShell修改文件的
LastWriteTime和LastWriteTimeUtc为3小时前,Last-Modified头同步修正,缓存恢复正常
已验证的临时解决方案
在构建脚本中添加PowerShell处理步骤,遍历所有构建产物文件,将文件的写入时间减去当前时区与UTC的偏移量,确保部署到Azure后转换为GMT时间时与实际时刻匹配:
# 获取本地时区与UTC的小时偏移量 $utcOffset = [TimeZoneInfo]::Local.BaseUtcOffset.TotalHours # 遍历目标构建目录下的所有文件 Get-ChildItem -Path "你的构建产物目录路径" -Recurse -File | ForEach-Object { # 计算调整后的时间 $adjustedTime = $_.LastWriteTime.AddHours(-$utcOffset) # 更新文件的写入时间(本地和UTC时间同步调整) $_.LastWriteTime = $adjustedTime $_.LastWriteTimeUtc = $adjustedTime.ToUniversalTime() }
潜在优化方向
- 暂未发现Azure CLI的
az webapp deploy命令有直接支持时区同步的参数,可关注官方文档更新 - 考虑在构建工具(如Unity、webpack等)的构建阶段直接生成UTC时区的文件修改时间,从源头避免时区转换错误
内容的提问来源于stack exchange,提问作者topstops
相关产品推荐
相关产品推荐

