0

我意识到这是一个已知问题问题,但我仍然没有找到足够的解决方案。

我想将@cache_page 用于我的 Django 应用程序中的一些视图,如下所示:

@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):
    ...

结束编辑

但我得到相同的结果。

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

任何帮助将非常感激。

4

2 回答 2

0

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

于 2012-07-19T16:16:35.087 回答
0

在 django 1.10 语言由装饰器处理

django.utils -> cache.py 的代码有方法 _generate_cache_key ,它作为 return _i18n_cache_key_suffix (request, cache_key)返回

如果我们研究它,它可以适应语言设置。

于 2018-12-22T20:39:28.270 回答