您的购物车目前是空的!
前面几篇文章我们讲述了
由于我们的数据里已达到百万计,而且页面中有比较多的mysql跨库跨表的计算,在打开页面时会造成时间过长。所以我们需要在Django框架中如何对页面进行预缓存数据。
本来我们打算使用 request 页面请求的方式,但是项目中需要登录以后才能看到这个页面,所以这条路不考虑。
但是我们可以将预缓存的数据提前计算好放在Django的缓存中,然后在使用时显示出来。
注:可以使用文件缓存的方式进行,然后看定期是否自动有新文件生成出来。
#!/usr/bin/env python # coding: utf-8 ###### # 调用方法 python .manage.py flushCaches ###### from django.core.cache import cache from scheduling.views import getIndexResult import time , datetime , hashlib from django.core.management.base import BaseCommand, CommandError class Command(BaseCommand): def handle(self, *args, **options): date = time.strftime("%Y-%m-%d %H:%M") print('开始预缓存首页数据,时间:%s'%date) cache_key = hashlib.md5(('index_'+date).encode(encoding='UTF-8')).hexdigest() if not cache.get(cache_key) : cache.get_or_set(cache_key, getIndexResult(date) ,60*60)
python .manage.py flushCaches
*/1 * * * * cd /data/wwwroot/scheduling/web/ ; /usr/bin/python manage.py flushCaches >> /tmp/flushCache.log 2>&1
下次我们打开页面时,速度就很快了。