Хорошая или плохая практика для сохранения результата запроса в Application.cfc
В моем приложении у меня есть боковая панель (на каждой странице), которая отображает список вакансий для небольшой компании. Разумно ли выполнить запрос в Application.cfc и как-то сохранить результаты там, или есть более разумный способ выполнить запрос и сохранить результаты где-нибудь еще в другой области?
Как лучше всего использовать ресурсы сервера?
Заранее спасибо.
Редактировать: я использую CF8. Обновления, скорее всего, будут происходить ежемесячно.
4 ответа
Используется cachedwithin в cfquery, который вызывает боковая панель.
У вас есть CF9? Я бы использовал область приложения, либо кэшируя запрос, либо результирующий HTML в объекте кеша, используя cachePut(), и вызывая объект кеша, где это необходимо, с cacheGet(). Затем, где бы вы ни управляли обновлением этой информации (либо CRUD вручную, либо веб-сервисом, потребляющим эту информацию и т. Д.), Просто обязательно обновите этот объект кэша, когда вы почувствуете изменение. Заполните объект кеша изначально в onApplicationStart(), и вы должны быть в порядке.
Как часто меняются вакансии? Вы можете сохранить их в приложении и назначить запланированное задание для периодического повторного выполнения запроса.
Если результат зависит от пользовательского сеанса, на ум приходит сессия. Область приложения будет обновляться только при перезапуске сервера, верно? Что касается ресурсов, то очевидно, что для сервера лучше загружать результаты только один раз, когда они запрашиваются впервые (область приложения). Но также очевидно, что эти результаты быстро (или скоро) станут устаревшими.
Если вы опасаетесь, что в базу данных отправляется слишком много запросов, вы можете изучить кеширование результатов.
Поскольку вы говорите о небольшой компании, возможно, вам следует начать с перезагрузки контента за сеанс и посмотреть, не выходит ли нагрузка на сервер базы данных из-под контроля.