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

Heroku部署的Django应用代码未更新问题排查求助

问题描述
  • 部署环境:Django博客托管于Heroku,静态资源存储在S3 Bucket
  • 异常现象:在注册表单模板中添加隐私政策说明段落后,本地代码已更新,且通过Heroku bash确认生产环境代码正确,但前端页面未显示新增内容
  • 已执行操作:运行collectstatic、重启dyno、通过Heroku GUI重新部署master分支,代码仓库已同步
排查与解决方案

1. 清理Django模板缓存

生产环境下Django默认启用模板缓存,即便代码更新,缓存的旧模板仍会被渲染:

  • 临时关闭模板缓存测试(修改settings.py):
    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [],
            'APP_DIRS': False,  # 需设为False才能自定义loaders
            'OPTIONS': {
                # 注释缓存加载器,改用非缓存版本
                # 'loaders': [
                #     ('django.template.loaders.cached.Loader', [
                #         'django.template.loaders.filesystem.Loader',
                #         'django.template.loaders.app_directories.Loader',
                #     ]),
                # ],
                'loaders': [
                    'django.template.loaders.filesystem.Loader',
                    'django.template.loaders.app_directories.Loader',
                ],
            },
        },
    ]
    
  • 部署后执行缓存清理命令:
    heroku run python manage.py clearcache
    

测试完成后建议重新开启缓存,避免影响性能。

2. 处理S3静态资源缓存

S3默认会为静态资源设置缓存策略,可能导致旧资源未被替换:

  • 重新执行静态资源收集,确保无报错:
    heroku run python manage.py collectstatic --noinput
    
  • 调整S3缓存控制参数(修改settings.py):
    AWS_S3_OBJECT_PARAMETERS = {
        'CacheControl': 'max-age=3600',  # 缩短缓存时间,测试时可设为0
    }
    
  • 手动在S3控制台删除对应旧静态文件,或给静态资源添加版本标识(如模板中引用style.css?v=2)

3. 跳过浏览器本地缓存

  • 强制刷新页面:Windows/Linux按Ctrl+Shift+R,Mac按Cmd+Shift+R
  • 打开Chrome开发者工具(F12),在「Network」标签勾选「Disable cache」,重新加载页面查看效果

4. 验证模板与渲染逻辑

  • 通过Heroku bash确认模板文件路径与内容:
    heroku run cat path/to/your/templates/registration/signup.html  # 替换为实际模板路径
    
  • 检查视图函数是否存在条件渲染逻辑(如仅对特定用户显示该段落)
  • 查看Django日志排查渲染错误:
    heroku logs --tail
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 13:05:10