Django服务器视图使用缓存可以大大减小服务器的压力,对数据实时性要求不高的场景使用缓存非常适合。
使用Django本地缓存
1. 在settings.py配置CACHES
CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', # 指定使用本地缓存 'LOCATION': 'unique-data_center_LocMemCache', 'TIMEOUT': 300, # 缓存超时时间(默认为300秒,None表示永不过期) 'OPTIONS': { 'MAX_ENTRIES': 300, # 最大缓存记录的数量(默认300) 'CULL_FREQUENCY': 3, # 缓存到达最大个数之后,剔除缓存个数的比例,即:1/CULL_FREQUENCY(默认3) } } }
2. 在视图中使用装饰器使用缓存
@cache_page(15) def stock_detail(request, pk): tab_name = 'stock_' + pk stock_mod = new_stock(tab_name) # 查询 if request.method == 'GET': limit = request.GET.get('limit') offset = request.GET.get('offset') total = stock_mod.objects.count() # 结果按日期降序排列 datalist = stock_mod.objects.all().order_by('-trade_date')[int(offset): int(offset)+int(limit)] json_list = [] import json # 返回json字符串 for data in datalist: json_dict = model_to_dict(data) json_list.append(json_dict) result = dict() rows = list() result['total'] = total result['rows'] = json_list logger.info('获取股票列表') return JsonResponse(result, safe=False)
@cache_page(15)指定缓存过期时间为15s,如果不指定,默认使用setting.py配置的缓存时间。