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

Phoenix + Elixir 问题:静态文件仍返回旧版本

解决Phoenix站点地图文件更新后仍返回旧版本的问题

以下是可能的原因和对应的解决步骤:

1. 缓存层问题

  • 浏览器缓存:直接按Ctrl+F5强制刷新页面,或清空浏览器缓存后再次访问,排除本地缓存干扰。
  • CDN缓存:若站点使用CDN服务,需登录CDN控制台手动清除sitemaps/sitemap1.xml的缓存,或等待CDN缓存自动过期。
  • 服务器端静态文件缓存:检查config/prod.exs中Plug.Static的缓存配置,比如cache_control_for_etags参数,若设置了过长的缓存时间(如max-age=31536000),会导致服务器端缓存旧文件。可临时调整缓存时间,或重启服务后强制刷新触发ETag更新。

2. 部署流程遗漏

  • 若使用mix release或类似编译部署工具,手动修改服务器源码目录的静态文件不会生效,因为运行的是编译后的release包。需重新构建release,确保最新的sitemap1.xml被包含在构建产物中,再重新部署并重启服务。
  • 若为手动部署,确认已将更新后的sitemap1.xml替换到应用运行目录的priv/static/sitemaps/下,而非仅修改源码目录的文件。

3. 静态服务配置验证

  • 确认config/prod.exs中的Plug.Static配置正确引用了static_paths:
    plug Plug.Static,
      at: "/",
      from: :my_app,
      gzip: true,
      only: MyApp.static_paths()
    
    确保only选项确实使用了MyApp.static_paths(),而非硬编码路径列表导致sitemaps未被包含。

4. 多实例运行问题

  • 检查服务器上是否有多个Phoenix实例在运行,旧实例可能仍在返回旧文件。使用systemctl、ps等工具确认所有旧实例已停止,仅保留最新重启的实例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 20:55:15