2013-04-11 76 views
1

有沒有辦法在每次部署後自動清除緩存?如何在部署時清除memcachier?

還是有一個命令,我可以運行清除它,類似於運行一個進程的命令?

例如Heroku的執行python manage.py執行syncdb

回答

3

可以使用django.core.cache.clear

最後,如果你想刪除緩存中的所有按鍵,使用cache.clear清除整個高速緩存(不管底層的實現)( )。小心這個; clear()將從緩存中刪除所有內容,而不僅僅是應用程序設置的密鑰。

所以一種方法將是write a management command manually,使這個調用。在您的應用程序myapp/management/commands/clear_cache.py之一,創建一個新的模塊:

from django.core.management.base import BaseCommand 
from django.core import cache 

class Command(BaseCommand): 
    help = 'Clears the underlying cache' 

    def handle(self, *args, **options): 
     cache.clear() 

,你現在可以調用python manage.py clear_cache。您應該查看Fabric進行管理部署,因爲它允許您編寫自動化腳本以執行所有必需步驟(以及調用此清除緩存腳本)

+0

謝謝。我希望它會更容易,但我想它不會比'heroku run python manage.py clear_cache'更簡單 – davierc

+0

添加到Timmy的很好的答案中,您還可以通過客戶儀表板清除MemCachier的緩存。一個腳本可能是更簡單的方法,或者Fabric。 –

+0

一個更正 - 「從django.core導入緩存」應該是從'django.core.cache導入緩存' – Greg