开发者

Speed up often used Django random query

开发者 https://www.devze.com 2023-03-30 05:32 出处:网络
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.

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 well


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/


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.

0

精彩评论

暂无评论...
验证码 换一张
取 消