-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Под окружением понимается набор параметров определённых для текущего посетителя сайта, например
- язык сайта,
- регион посетителя
- тема сайта
- часовой пояс
- тема сайта.
Расширение предоставляет интерфейс для определения этих параметров без наделения их смыслом. Предполагается, что за смысл и реализацию параметров окружения отвечают другие расширения. Делать многоязычный сайт с помощью этого расширения или как-то по другому остаётся на выбор, сама возможность не обязывает в окружении сохранять всё. Целесообразность определяется тем, что для каждого набора будет создаваться отдельный кэш и на сервере и в браузере. Кэш это и причина и препятствие для хранения всего в окружении.
Также с подключением окружения у любой страницы будет канонический адрес без информации об окружении и множество адресов содержащих имя окружения.
- /contacts - канонический
- /samara/contacts
- /ru/contacts
- /3diT4/contacts
По смыслу окружение в данном понятии похоже на локаль в php.
На страницах с окружением все ссылки остаются в каноническом виде. Поисковые системы индексируют только канонические адреса сайта. Соответственно многоязычный сайт в данной реализации хоть и имеет свои адреса для отдельных языков продвигается только канонический адрес. Серверная часть канонического адреса кэшируется с помощью заголовков Etag и modified. Имя окружения попадает в Etag определяет глобальных кэш серверного ответа и также отдельные параметры из окружения или всё имя окружения попадает в остальные условия кэширования Access::cache Cache::exec.
Каждому набору параметров в окружении даётся какое-то сокращённое имя. Например окружние samara может содержать в себе информацию и о регионе, и языке.
Параметры могу по разному комбинироваться имя может состоять из нескольких частей. Например, samara-en-def. Смысл и формула по которой формируется имя определяется конкретной реализацией.
Для этого есть две функции одна по набору параметров создаёт имя, другая по имени возвращает набор параметров.
Env::set($obj);
Env::get($name);