2014-01-16 2 views
0

У меня есть 10 html-страниц и 10 функций в файле views.py. У меня есть один и тот же запрос в каждой функции (и те же результаты). Итак, каков наилучший способ оптимизации не выполнять такой же SQL-запрос на всех страницах?Каков наилучший способ выполнения одного и того же запроса sql на каждом html-страницах

ответ

1

Немного непонятно, имеете ли вы в виду, что вы не хотите ударять по базе данных несколько раз, или вы не хотите выписывать фактический код несколько раз (что является основной частью «pythonic»).

Если это последний, ознакомьтесь с class based views. Это очень мощные инструменты, которые позволяют вам писать гораздо меньше кода котельной плиты и сделать ваше приложение гораздо более удобным. Например, вы можете написать один базовый класс, содержащий запрос, и все остальные представления могут наследовать этот базовый класс и добавить свой собственный шаблон/независимо от того, что вы переходите из вида для просмотра.

Если это первый, и вы беспокоитесь о попаданиях в базу данных, тогда я бы поставил вопрос A) Действительно ли запрос действительно дорог, что его нужно оптимизировать? и B) Если это так дорого, уверены ли вы, что есть очень веская причина, что вам нужно повторить его в 10 разных взглядах?

Если да, то да, вы оба захотите посмотреть в кеширование, используя что-то вроде memcached и каркас кэширования django.

В дальнейшем, пожалуйста, укажите дополнительную информацию в своем вопросе. Примеры ваших взглядов/объяснений ПОЧЕМУ, что вам нужно делать, что вы пытаетесь сделать, могут не только помочь людям ответить на ваш вопрос, но и указать вам в сторону лучшего решения вашей проблемы.

+0

Принимаю во внимание «не повторяй себя». Я говорю о моей части профиля. Я хочу, чтобы информация о профиле существовала на всех страницах. Например, твиттер. Ваши следующие, твиты, сопровождаемые vs существуют на всех html-страницах. (sory мой плохой английский). Поэтому оба они важны для меня, я думаю. –

+0

Короткий ответ здесь: «Не оптимизировать преждевременно». Извлечение информации о профилях из вашей базы данных - такая небольшая транзакция, что вы не увидите практически никакой разницы между кешированием и не кэшированием. Даже для более дорогих запросов memcached было бы более чем достаточно, чтобы справиться с этим. – ptr

Смежные вопросы