如何在django中缓存视图

时间:2016-06-08 00:39:05

标签: python django

我目前正在使用django而我正在尝试缓存我的视图

from django.views.decorators.cache import cache_page

@cache_page(60 * 15)
def index(request):
   # This method takes time to run, which is why I need to cache this view
   a_method_that_preforms_heavy_db_transactions()

   context_dict={'Models': Model.objects.all()} 
   return render(request, 'webapp/index.html', context_dict)

我有a_method_that_preforms_heavy_db_transactions()只是为了测试加载时间,看看它是否缓存了视图,但加载时间不会改变,因为它应该是"缓存"而且我不确定为什么这是我的settings.py

 CACHES = {
    'default': {
    'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
    'LOCATION': 'My_computers_ip_address:11211',
   }
}

2 个答案:

答案 0 :(得分:3)

您需要添加caching service,例如Memcached

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': '127.0.0.1:11211/A_ROUTE_WITH_A_HEAVY_TRANSACTION',
    }
}

您可以在这里找到所需的一切:

https://docs.djangoproject.com/en/stable/topics/cache/

答案 1 :(得分:1)

你有set caching up吗?您需要在CACHES文件中定义settings.py。您可以使用memcached,Redis,数据库或文件系统。最简单的设置是本地内存,因为它不需要任何外部服务:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
        'LOCATION': 'unique-snowflake',
    }
}