Speed up often used Django random query
I've got a query set up that puts 28 random records from a database into a JSON response. This page is hit oft开发者_StackOverflow中文版en, 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 wellDjango 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.
from django.views.decorators.cache import cache_page
@cache_page(60 * 15)
def my_view(request):
...
https://docs.djangoproject.com/en/1.3/topics/cache/
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):
>>> e = Entry.objects.select_related().get(id=2)
>>> print e.blog # Doesn't hit the database; uses cached version.
>>> print e.blog # Doesn't hit the database; uses cached version.
I'm not sure about three tables, but it works well for two.
精彩评论