加快常用的Django随机查询速度
我设置了一个查询,将数据库中的 28 条随机记录放入 JSON 响应中。这个页面经常被点击,每隔几秒钟,但目前对于我来说太慢了。
在 JSON 响应中,我有:
- ID 的
- 用户名
- Base64 缩略图
这些都来自三个链接表。
我很想听到其他一些解决方案,而不是用户简单地点击页面、查找 28 条随机记录并返回响应。我的一个想法是:
- 运行一个进程,每隔 30 秒左右使用 JSON 响应创建一个缓存页面。
这是一个好的选择吗? 如果是这样,我很想知道这是如何完成的。
再次感谢,
希望大家都好
I've got a query set up that puts 28 random records from a database into a JSON response. This page is hit often, every few seconds, but is currently too slow for my liking.
In the JSON response I have:
- ID's
- Usernames
- a Base64 thumbnail
These all come from three linked tables.
I'd be keen to hear of some other solutions, instead of users simply hitting a page, looking up 28 random records and spitting back the response. One idea I had:
- Have a process running that creates a cached page every 30 seconds or so with the JSON response.
Is this a good option?
If so, I'd be keen to hear how this would be done.
Thanks again,
Hope everyone is well
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Django 支持多种缓存方法,包括内置缓存和 memcached。我将选择文档中的方法之一,并为您的 json 响应创建特定视图。然后,您可以使用 @cache_page 装饰器并指定特定时间。
https://docs.djangoproject.com/en/1.3/topics/cache/
Django supports a variety of caching methods, both built-in and memcached. I would select one of the methods in the documentation, and create a specific view for your json response. You could then use the @cache_page decorator and specify a particular time.
https://docs.djangoproject.com/en/1.3/topics/cache/
如果表通过外键链接,可能 使用 select_lated?从链接中,他们给出了示例(您需要向下滚动一点):
我不确定三个表,但它适用于两个表。
If the tables are linked via foreign key, maybe using select_related? From the link, the example they give (you'll need to scroll down a bit):
I'm not sure about three tables, but it works well for two.