在我的意见,我有以下Django的缓存得到过期项
@require_POST
def loadVals(request):
result = //do some heavy calculations
return HttpResponse(json.dumps({"data": result}), content_type="application/json")
现在我已经添加了一个缓存,这样,我没有执行“重calclations”所有的时间。因此,新的代码看起来像
settings.py
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
'LOCATION': 'unique-snowflake'
}
}
views.py
from django.core.cache import get_cache
@require_POST
def loadVals(request):
cache = get_cache('default')
result = cache.get('res')
if result == NONE:
result = //do some heavy calculations
cache.set('res', result, 30)
return HttpResponse(json.dumps({"data": result}), content_type="application/json")
else:
return HttpResponse(json.dumps({"data": result}), content_type="application/json")
我想要做的却是,即使是高速缓存已经过期,我想保存前端用户一些等待时间(因为繁重的计算),并且只返回最后过期的值。 然后刷新缓存。
我如何
1)获取过期缓存的值?因为如果缓存已过期,cache.get('res')将返回NONE
2)在返回HttpResponse语句之后进行调用以刷新缓存值并执行大量计算(其中返回statmenet刚刚返回了过期值)或者可能通过异步调用来做到这一点?
尼斯使用螺纹。不幸的是,wsgi没有保证这个过程将在下一个请求中出现。所以使用线程永久缓存是一种反模式。 – Wtower 2016-12-23 08:36:20