【发布时间】:2017-02-02 09:05:00
【问题描述】:
我有一个分页的 Django 论坛,其中用户的帖子根据最近的发布时间累积。我每页显示 20 个帖子。在高峰期,每约 2 秒会保存一篇新帖子,而请求页面每秒查看多达 11 次。
我想通过引入缓存来减少数据库命中。我注意到大部分流量都到达第一页 - 所以这是我要缓存的。本质上,我计划在每次写入时 set 缓存中的第一页,并在观众想要使用它时 get 它。我可以选择redis 和memcache 作为缓存后端。
我的问题是如何缓存和提供只是第一页。我的未缓存代码如下:
#object_list has up to 1000 object ids at a time
paginator = Paginator(object_list, 20) #pass list of obj ids & no. of objs/page
page = request.GET.get('page', '1')
try:
page = paginator.page(page)
except PageNotAnInteger:
# If page is not an integer, deliver first page.
page = paginator.page(1)
except EmptyPage:
# If page is out of range (e.g. 9999), deliver last page of results.
page = paginator.page(paginator.num_pages)
page_contents = retrieve_posts(page.object_list) #retrieve 20 objects
【问题讨论】:
标签: python django caching pagination memcached