-1
我意識到這是一個已知的problem, problem但我仍然沒有找到足夠的解決方案。Django i18n和緩存干擾
我想用@cache_page在我的Django的一個應用程序的一些看法,比如:
@cache_page(24 * 60 * 60)
def some_view(request):
...
的問題是,我也是用國際化了的語言切換器來切換每個頁面的語言。所以,如果我打開緩存,我不會得到我期望的結果。看起來我得到了最後一個緩存頁面。
我已經試過這樣:
@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):
...
編輯完
,但我得到了相同的結果。
當然,如果我刪除緩存一切都按預期工作。
任何幫助將不勝感激。
語言設置通常存儲在cookie中。你有沒有試過\ @vary_on_cookie?或者你可能需要一個自定義的\ @ vary裝飾器.. – Tisho
是的,我已經嘗試過@ @ vary_on_cookie'。同樣的結果。沒有一個簡單的解決方案,我無法相信這是一個問題。使用緩存+ i18n肯定不會少見? –
我剛做了一個小測試。對我來說,緩存似乎按預期工作。 Django文檔中也描述了這種情況,即當USE_I18N = True和USE_L10N = True時,區域設置標識將附加到緩存鍵。那麼,你能描述一下究竟發生了什麼 - 嘗試加載緩存的頁面時,以及更改語言環境後,會收到哪些http標題?它是否從本地瀏覽器的緩存中加載?服務器返回302/Not Modified標頭嗎?你使用哪個Django版本? – Tisho