Django缓存:在缓存预热时重新加载浏览器缓存

时间:2014-01-17 06:02:05

标签: python ajax django angularjs caching

我使用Angular作为前端,Django作为我的后端配置了memcache。

我面临的问题是使用AJAX调用angular makes 一旦我使用

cache.flush_all()

我从浏览器点击了同一个网址,第一个获取请求被确认并发送了新数据。但后来我的应用程序涉及发送多个ajax请求来更改视图。这些视图总是由浏览器缓存提供。(直到我明确清除缓存或按Ctrl + R)。

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

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

@cache_control(must_revalidate=True)

这是我的角度代码:

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

另请注意,我无法使用max_age参数。因为它也将丢弃新缓存,并且请求将一直处理。而不是那样,我需要浏览器获取缓存,我已经在刷新后进行了整理。

我正在使用manage.py runserver进行测试。刺激环境是gunicorn + nginx。 如果需要任何额外信息,请发表评论。

1 个答案:

答案 0 :(得分:1)

建议使用never_cache装饰器。它的工作原理是设置响应标头以在浏览器中禁用缓存,如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)
相关问题