Перевод из FAQ по NitroPack
... как только покупатель добавляет товар в корзину, входит в систему или добавляет товар в список желаний, веб-сайт снова начинает работать медленно. Это ошибка?
Это не ошибка. К сожалению, система OpenCart не позволяет проводить оптимизацию в следующих случаях:
- Клиент вошел в свою учетную запись OpenCart
- У покупателя есть товары в корзине
- У клиента есть товары в списке желаний
При выполнении любого из вышеперечисленных условий оптимизации NitroPack не вступают в силу. Мы рассматривали возможность оптимизации в этих случаях, но в прошлом столкнулись с некоторыми очень серьезными препятствиями:
- Место на диске веб-сайта быстро закончится, потому что теперь кешированный контент должен создаваться для каждого отдельного сеанса пользователя.
- Частичная оптимизация не работает, потому что содержимое сеанса пользователя изменяет заголовок, и всю страницу нужно оптимизировать целиком, а не частично.
- Ваша квота на оптимизацию услуг очень быстро иссякнет.
- Это не очень полезно для клиентов, так как их посещение первой страницы всегда неоптимизировано, пока они не решат обновить страницу. Типичный путь клиента с сеансом использует каждую страницу только один-два раза. Это устраняет необходимость в оптимизации.
Немного бредово написано.
Чтобы спать был быстрым в любых условиях, нужно:
- кешировать данные товаров - то что выдает БД. При этом нужно понять для себя, что именно является динамическим - в любом случае запрашивается из БД, а что нужно кешировать. Картинки, их размеры, цены для разных групп покупателей, хлебные крошки, характеристики - все в кеш.
- кешировать меню категорий, тут все понятно. Эти данные меняются очень редко.
- кешировать категории: дочерние категории, список товаров на первой странице, хлебные крошки, описание, картинки.
- отдельный кеш для каждого модуля левой и правой колонки, верхнего и нижнего блоков - все кроме фильтра и просмотренных товаров.
Чем меньше чтений файлов кеша, тем лучше.
Я себе это все написал, все работает прекрасно и молниеносно быстро. Никакие модули не нужны. В сумме с тем, что я выпил нахрен jquery и bootstrap и переписал запросы в БД система получилась экстремально легкой - 25 КБ несжатого js и 20 КБ CSS, это со слайдерами, адаптивностью, доступностью для незрячих людей и всем, что я только смог придумать. При этом по Lighthouse все метрики 100/100.
Да, писал я долго, полгода где-то, но результат шикарный.
Разве что ещё можно настроить кеш запросов nGinx, но в этом не вижу необходимости, кто хочет - сам себе настроит.