В Rails 2 я пытаюсь оптимизировать производительность загрузки веб-страницы медленно.
Я рассчитываю время выполнения операторов в модели и обнаруживаю, что удивительное количество времени приходится на вызовы из одной модели в другую модель, даже если кажется, что доступ к базе данных вообще отсутствует,
Если говорить точнее, скажем, медленная модель - это отдел, а я рассчитываю расходы на отдел.Метод затрат должен знать, был ли закрыт квартал, и эта информация находится в другой модели, Квартал
Первый раз, когда Department.expenditures вызывает Quarter.closed?есть доступ к базе данных, и я могу это принять.Но я сделал что-то, чтобы сохранить это в памяти внутри метода модели, чтобы будущие вызовы Quarter.closed?не имеют доступа к базе данных.Код внутри Quarter.closed?теперь работает около 4 микросекунд, но просто вызывает Quarter.closed?изнутри Department.expenditures занимает 400 микросекунд, и с сотнями отделов, которые складываются.
Я мог бы кэшировать значение Quarter.closed внутри глобальной переменной, но это кажется проблематичным.Кто-нибудь знает, что происходит или есть предложения о лучшей практике?