Django i18n和缓存干扰

时间:2012-06-21 18:14:24

标签: django caching internationalization

我意识到这是一个众所周知的problemproblem,但我仍然没有找到足够的解决方案。

我想在我的Django应用程序中使用@cache_page查看一些视图,如下所示:

@cache_page(24 * 60 * 60)
def some_view(request):
    ...

问题是我也在使用i18n和语言切换器来切换每个页面的语言。所以,如果我打开缓存,我不会得到我期望的结果。看来我得到的是最后一个缓存页面。

我试过这个:

@cache_page(24 * 60 * 60)
@vary_on_headers('Content-Language', 'Accept-Language') 
def some_view(request):
    ...

编辑 ...而且:

@cache_page(24 * 60 * 60)
@vary_on_cookie 
def some_view(request):
    ...

结束编辑

但我得到的结果相同。

当然,如果我删除缓存,一切都按预期工作。

任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:0)

好的 - 浏览器缓存似乎存在问题,而不是Django本身。我发现在开发过程中关闭所有浏览器缓存很有用(我知道这很明显)。

答案 1 :(得分:0)

在Django 1.10上,语言由装饰器处理

django.utils-> cache.py中的代码具有_generate_cache_key方法,该方法以返回形式返回 _i18n_cache_key_suffix (请求,cache_key)

如果我们发现它可以适应语言设置。