2013-09-05 68 views
1

到現在爲止我一直在爲我的4個站點使用單個memcached實例。其中三人使用KEY_PREFIX,因爲documentation暗示我需要這樣做。一切都很好,但現在我需要定期清除列表視圖(就像我添加一個條目時一樣)。我發現了一個way來清除頁面,並且正在審查它是如何工作的,當我碰到CACHE_MIDDLEWARE_KEY_PREFIX,現在我很困惑。Django KEY_PREFIX vs CACHE_MIDDLEWARE_KEY_PREFIX

  1. 似乎從來沒有使用KEY_PREFIX,除非手動定義鍵然後實際使用它。這是一個真實的陳述嗎?特別是有關使用KEY_PREFIX的文檔看起來不準確?

  2. 看來,我應該在我的設置文件中做到這一點,以確保它們是對齊的,但我不想重複鍵(demo:demo :)。這實際上會重複嗎?

    KEY_PREFIX = CACHE_MIDDLEWARE_KEY_PREFIX = '演示:'

我真的想了解這兩種機制的工作原理。我開始懷疑他們真的不同

回答

0

我不認爲你現在還不太對。

對於您的觀點1,KEY_PREFIX是最重要的設置,使用不同的Django安裝共享同一個緩存的時候,但它的使用是這樣的:

CACHES = { 
    'default': { 
     "BACKEND": "redis_cache.cache.RedisCache", 
     "LOCATION": "127.0.0.1:6379:1", 
     "KEY_PREFIX": 'site-cache-prefix', 
     "OPTIONS": { 
      "CLIENT_CLASS": "redis_cache.client.DefaultClient", 
     } 
    } 
} 

這意味着每個Django的實例將使用訪問緩存時使用不同的前綴。這可能是你想要的。如果您確實想在您的站點之間專門共享緩存,那麼添加名爲'shared'的另一個緩存別名可能會成爲一種方法。

CACHE_MIDDLEWARE_KEY_PREFIX專門用於django的緩存中間件,它將被用於我相信的KEY_PREFIX。