Только что в Common JS выкатили обновлённую логику кеширования товаров.
Товары в браузере клиента у нас всегда кешировались на 120 секунд, и это немного странно. Ведь для всех было бы лучше если бы мы хранили и доставали из кэша товары до тех пор пока данные этих товаров не были изменены, без привязки к определённому промежутку времени. Именно это и было сделано.
Для каждой формы товара с атрибутом
data-product-id
теперь добавлен ещё один атрибут data-product-updated-at
в котором будет timestamp
последнего обновления товара полученный из Liquid. Этот timestamp
вместе с данными о товаре мы будем сохранять в кэше, а затем при очередной загрузке страницы сверять timestamp
который был передан в атрибуте с тем который сохранен для этого товара в кэше. Таким образом мы будем запрашивать данные о товаре только тогда когда товар действительно был обновлён.Для кастомных виджетов и для форм товаров, где
data-product-updated-at
не задан, кеширование будет работать как раньше (120 секунд).Кроме того, для товаров добавленных в корзину которых нет на текущей странице (формы с
data-product-id
) информация всегда будет доставаться из кеша. Если товара в кеше нет, то мы получим его по ID варианта из корзины, запросом вида /front_api/products_with_variant_ids.json
.Сейчас это сделано для шаблонов 4-го поколения, через пару недель будет сделано и для шаблонов 2-го поколения.