Как управлять кешем в интернет-магазине в PHP? - PullRequest
1 голос
/ 12 апреля 2020

Я хотел бы внедрить кэш в моей системе, но во-первых Интересно, как управлять, например, списком товаров в интернет-магазине, когда есть возможность сменить валюту? Валюты не имеют разделенных URL-адресов (они решаются с помощью файлов cookie), как и языковые переводы, у которых есть свой URL-адрес, поэтому один и тот же URL-адрес списка продуктов предназначен для всех валют.

Во-вторых . Обычно в заголовке интернет-магазина есть значок корзины с фактическим состоянием корзины - например, сколько продуктов вставлено и какова его цена. Весь заголовок может быть кэширован, но этот элемент. Как проще всего решить эту проблему?

В-третьих . В интернет-магазине есть много страниц, которые я не могу себе представить, как их кешировать, потому что они очень динамичны c и / или используют, например, $ _POST, но, возможно, это возможно - например, страница с формами , поиск или суммирование корзины, где пользователь заполняет свою личную информацию, доставку, оплату и так далее. Есть ли способ, как кэшировать даже эти страницы, или они должны быть исключены из кэширования?

Я пытался найти некоторые "учебные пособия" и основные сведения о том, как управлять кэшированием в электронных магазинах, но Я не нашел ничего полезного. Я буду оценивать всю новую информацию. Может быть, некоторые мои квестины глупы, извините за это.

Просто чтобы быть уверенным, я не пытаюсь найти какой-либо фреймворк, который уже решил все эти проблемы, но пытаюсь понять, как это работает.

1 Ответ

0 голосов
/ 15 апреля 2020

Большая часть кеширования выполняется ключом кеша. Как Cache::put('product-id-43', $product);. Так что, пока вы можете создать уникальный идентификатор, вы можете его кешировать.

Кэширование всей страницы

Для кеширования по URL и значению повара ie вы можете сделать что-то вроде этого: $key = 'url-'.$_SERVER['REQUEST_URI'].'-'.$_COOKIE['currency']. Чтобы использовать этот кеш, вам нужно как можно раньше найти в своем коде место, где вы проверяете, кэширован ли этот ключ. Если он просто распечатывает его и завершает работу, если он не генерирует страницу, добавьте ее в кэш и распечатайте содержимое.

Частичное кеширование

Принцип тот же, что и раньше, но вместо того, чтобы кэшировать всю страницу, вы просто кэшируете ее части, а затем комбинируете. Таким образом, в упрощенном виде, предполагая, что верхний и нижний колонтитулы кэшируются echo Cache::get('header') . getCart() . Cache::get('footer'). Уловка, чтобы сделать это, состоит в том, чтобы найти правильное место, чтобы добавить это. Механизмы шаблонов могут помочь с этим.

Кэширование POST

Это можно сделать так же, как и для всей страницы, просто добавив метод к ключу. Например, $key = 'url-'.$_SERVER['REQUEST_METHOD'].'-'.$_SERVER['REQUEST_URI'].'-'.$_COOKIE['currency']. С POST дело в том, что они должны что-то менять и поэтому часто не должны кэшироваться. В этом вся проблема кеша, его легко кэшировать, сложно узнать, когда сделать кеш недействительным.

Если вы хотите узнать больше о кешировании, я рекомендую проверить varni sh , Это намного быстрее и намного гибче. Одним из приятных моментов является то, что вы можете добавить больше ключей к объекту, поэтому, если вы пометите все страницы валютой, вы можете запретить все страницы с указанием c валюты, если вы измените обменный курс и т. Д. c. Для частичного кеширования вы можете использовать серверные включения.

...