Я работаю над сайтом электронной коммерции, на каждой странице этого сайта есть этот заголовок, содержащий информацию о корзине покупок, поэтому каждый раз, когда страница с этим заголовком, в которой загружена корзина, загружается в базу данных удар. Интересно, могу ли я использовать технологию кэширования базы данных для сокращения времени запроса? Например, если ничего не изменилось, то не извлекайте данные из базы данных, если в корзину не добавлены новые продукты (ы)?Кэш базы данных Laravel
ответ
Уверен, что это возможно, но это звучит как плохая идея, и я отменяю ее, потому что кэш используется совместно со всем приложением, а информация о корзине связана с одним пользователем. Для такого рода пользовательской информации лучше использовать куки или сеанс.
В любом случае, здесь у вас есть. Вы не представили образец кода, поэтому я составил нечто общее. Хитрость заключается в том, чтобы добавить к ключу кеша что-то, что делает его уникальным для каждого пользователя (например, первичный ключ модели), и после добавления/удаления продукта в корзину из ящика очистит кеш с использованием предыдущего ключа кеша.
// Code to get current user shopping cart (The one that will be shown in your header)
$cart = Cart::where('user_id', $user_id = Auth::user()->getKey())->remember(60*2, "cartOfUser$user_id")->get();
// Code that adds a product to the cart
Cart:addProduct($product, $qty) and Cache::forget('cartOfUser' . Auth::user()->getKey());
Советуем не переустраивать сейчас. Я уверен, что запрос базы данных корзины не имеет большого значения. Завершите свое приложение, отполируйте его, и когда все работает как ожидалось, запустите профилировщик, чтобы найти узкие места, а затем оптимизировать.
- 1. Hazelcast кэш данных базы данных кэша Java
- 2. Кэш приложения Laravel 4
- 3. запросов Hibernate кэш вместо базы данных
- 4. Кэш Smarty с ошибкой содержимого базы данных
- 5. Кэш запросов MySQL для базы данных/Таблица
- 6. Кэш-динамическое сгенерированное изображение из базы данных
- 7. Кэш базы данных Sitecore - как исключить элементы
- 8. Кэш-память автономной базы данных в C#
- 9. Клей для приложений .NET кэш базы данных
- 10. Laravel Динамические базы данных
- 11. Laravel Существующие базы данных
- 12. Ошибка базы данных Laravel
- 13. Подключение базы данных Laravel
- 14. Сессии базы данных Laravel
- 15. Laravel кэш запомнить навсегда
- 16. База данных базы данных Laravel
- 17. Laravel 5: забыть кэш не работает
- 18. Laravel 5 сеансов базы данных (Laravel 5.0)
- 19. Кэш-механизм (структура данных)?
- 20. Зависимое кэш-память базы данных с несколькими базами данных/SqlServers
- 21. Дизайн Laravel и базы данных
- 22. Использование Laravel без базы данных
- 23. Laravel базы данных имя файла
- 24. Локализация Laravel - содержимое базы данных
- 25. Использование базы данных сеанса Laravel
- 26. Связи базы данных Laravel 5
- 27. Соединение базы данных Laravel/MySQL
- 28. Форма ввода базы данных (Laravel)
- 29. Ограничения базы данных Laravel 4
- 30. Laravel получения данных из базы данных
Да, взятый пункт, я согласен с тем, что запрос базы данных кэш-памяти для стольких разных пользователей - плохая идея. – dulan