python - Django 缓存 : reload browser cache when cache is warmed up

标签 python ajax django angularjs caching

我使用 Angular 作为前端,使用 Django 作为后端,并配置了内存缓存。

我面临的问题是 AJAX 调用 Angular 问题。
一旦我使用

cache.flush_all()

我从浏览器中点击相同的 url,第一个 get 请求得到确认并发送新数据。但是我的应用程序涉及发送多个 ajax 请求来更改 View 。这些 View 始终由浏览器缓存提供。(直到我明确清除缓存或按 Ctrl+R)。

我不想完全禁用缓存,我只想让浏览器在刷新旧缓存时获取更新的缓存。

我尝试使用 cache_control 装饰器但没有成功。

@cache_control(must_revalidate=True)

这是我的 Angular 代码:

$http({method: method, url:url, data:postData }).
          success(...

另请注意,我无法使用 max_age 参数。因为它也会丢弃新的缓存,请求将一直进行处理。相反,我需要浏览器在刷新后获取我已经预热的缓存。

这是我用 manage.py runserver 测试的。 prod环境为gunicorn+nginx。 如果需要任何额外信息,请发表评论。

最佳答案

建议使用 never_cache 装饰器。它通过设置响应 header 来禁用浏览器中的缓存来工作,如 source 中所述:

def add_never_cache_headers(response):
    """
    Adds headers to a response to indicate that a page should never be cached.
    """
    patch_response_headers(response, cache_timeout=-1)

关于python - Django 缓存 : reload browser cache when cache is warmed up,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21178931/

相关文章:

python - pygame.display.set_mode().fill((0, 200, 255)) 中的 fill()

javascript - VueJS 组件 DOM 在 AJAX Promise 后未更新

python - 用于表大小或元组大小(物理内存)的 django 命令?

mysql - 无法安装 django-activity-stream 数据库表

python - 在 Python 3 中创建一个 Account 类

python - 根据两个字符串值评估 Pandas DataFrame

python - 如何将包迁移到新的 Python 安装?

javascript - 通过 Ajax 将 jQuery 对象发送到 PHP

javascript - 按顺序加载两个 jqgrids(序列 ajax 调用)

javascript - Javascript可以编译Django的模板吗?