Как формируются страницы

1. Когда страница магазина получает post или get-запрос, то в первую очередь смотрится url этого запроса. По структуре url'а платформа понимает какой объект запрашивается и какой шаблон использовать.

Поэтому на url'ы страниц магазина очень многое завязано, и именно поэтому там присутствуют такие вставки как /collection/, /product/ и т.д.

2. Получив запрос, сервер формирует страницу в соответствии с имеющимся шаблоном этой страницы

Тип страницы (шаблон) Имя файла в экспорте темы URL
Для всех типов
(layout)
layout.liquid любой
Главная index.liquid /
Категория collection.liquid /collection/_name_
Товар offer.liquid /collection/_collection_/product/_product_ или /product/_product_
Корзина cart.iquid /cart_items
Страница page.liquid /page/_name_
Поиск search.liquid /search
Блог blog.liquid /blog/_name_
Статья article.liquid /blog/_name_/_name_

Далее система инициализирует переменные, использованные на этой странице.

Затем шаблон преобразуется в HTML-код страницы.

Полученный код подставляется в layout, общий для всех страниц магазина, в место, обозначенное переменной content_for_layout.

Здесь производится подстановка конкретных значений использованных переменных.

Далее, в конец получившейся страницы добавляются обращения к счётчикам и сформированная страница отправляется в ответ на запрос.

3. Браузер посетителя получает страницу и формирует ее, после этого уже обрабатывает имеющийся там javascript и другой контент, обрабатываемый клиентом (flash, java и т.д.)

4. Отданная страница кешируется сервером, т.е. сохраняется в базе

5. При повторном запросе к той же странице ее формирование не проходит заново, страница отдается из кеша.

6. Кеш страницы сбрасывается при определенных изменениях в объекте, которому эта страница соответствует. Кеш страницы товара - при изменениях в товаре (названии, описании и т.д.), кеш страницы категории - при изменении товаров этой категории, порядка их сортировки, описании категории и т.д.

7. Необходимо понимать что использование какой-либо конструкции liquid'а еще не является гарантией того что эта конструкция будет обрабатываться при каждой загрузке страницы. Кеш, как говорилось ранее, сбрасывается при определенных событиях.

Например, можно вывести в шаблоне текущую дату, но если объект, который соответствует этой странице, не меняется каждый день, то и дата, выводимая таким образом, меняться не будет. Поэтому для таких целей лучше использовать javascript.

По этой же причине нельзя вывести на страницу IP-адрес посетителя, вывести случайные товары из категории или еще какой-либо случайный контент. Но можно использовать javascript, скрывая со страницы случайные элементы.

Полезная статья?
Остались вопросы?
Отправь тикет в техподдержку!
Недавно просмотренные статьи