Danny
Danny

Reputation: 199

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 often, every few seconds, but is currently too slow for my liking.

In the JSON response I have:

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:

Is this a good option? If so, I'd be keen to hear how this would be done.

Thanks again,
Hope everyone is well

Upvotes: 3

Views: 329

Answers (2)

shawnwall
shawnwall

Reputation: 4607

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.

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/

Upvotes: 4

Evan Porter
Evan Porter

Reputation: 2977

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.

Upvotes: 0

Related Questions