Cookies At The Edge: не пост в блоге о выпечке
2 марта 2022 г.На днях я столкнулся с интересным вариантом использования периферийных вычислений: управление файлами cookie на периферии. Вероятно, это не будет очень актуально для множества людей, но, тем не менее, это интересный пример использования, которым я хотел поделиться.
Краткая информация о файлах cookie
Когда большинство людей думают о печенье, они представляют себе вкусные запеченные кусочки. Но мы здесь не для того, чтобы говорить о них (к сожалению). В контексте веб-разработки [cookies] (https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies) — это один из вариантов хранения данных веб-разработчиками.
Печеньки классные. По сравнению с некоторыми другими вариантами они имеют массу преимуществ:
- В отличие от хранения данных в памяти, файлы cookie могут сохраняться даже после сброса среды. На внешнем интерфейсе это означает, что они могут выдерживать перезагрузку браузера, а на внутреннем — перезапуски или сбои службы.
- В отличие от
localStorageилиsessionStorage, доступ к файлам cookie можно получить на стороне сервера. Это может позволить вам создавать персонализированные возможности для пользователей на основе их файлов cookie. Файлы cookie также могут иметь флаг «HttpOnly», который защищает их от атак межсайтового скриптинга (XSS).
- В отличие от базы данных, файлы cookie также могут быть доступны на стороне клиента (если только они не имеют атрибута
HttpOnly). Это означает, что нет необходимости делать HTTP-запрос для повторной выборки данных, которые у вас уже есть.
- Файлы cookie не имеют состояния, поэтому они невероятно хорошо работают в бессерверных средах, поскольку с ними можно обращаться одинаково в любом количестве бессерверных функций. Это отлично подходит для масштабируемости.
Эти характеристики делают файлы cookie отличным выбором для одних вещей (и не очень хорошим для других).
На сегодняшний день наиболее распространенными вариантами использования файлов cookie являются:
- Управление сессиями: логины, корзины, игровые результаты.
- Персонализация: пользовательские настройки, темы и другие настройки.
- Отслеживание: запись и анализ поведения пользователей.
Как упоминалось выше, файлы cookie могут быть доступны как на стороне сервера, так и на стороне клиента. Для взаимодействия с файлами cookie у вас в основном есть два варианта: заголовки HTTP на стороне сервера и JavaScript на стороне клиента для доступа к [DOM] (https://developer.mozilla.org/en-US/docs/Web/API/ Документ_Объект_Модель).
Если вы уже знали о файлах cookie, вы можете вспомнить, что еще в 2019 году Apple реализовала функцию в своем [браузере Safari] (https://www.apple.com/safari/) под названием [Интеллектуальное предотвращение отслеживания] (https:// webkit.org/blog/8613/intelligent-tracking-prevention-2-1/) (ITP). Это было довольно серьезное изменение в том, как их браузер обрабатывает файлы cookie.
В ITP 2.1 все постоянные файлы cookie на стороне клиента, т. е. постоянные файлы cookie, созданные с помощью document.cookie, ограничены семидневным сроком действия.
Они перечисляют ряд причин для этого изменения, которые в основном связаны с конфиденциальностью, безопасностью и производительностью. Важным выводом является то, что если вы, как разработчик, хотите, чтобы сеансы длились дольше недели, вы больше не можете полагаться на создание файлов cookie клиентского размера.
Итак, как фронтенд-команды подходят к этому в будущем? Сохраняем ли мы логику на стороне клиента и просто позволяем файлам cookie истечь через семь дней? Переносим ли мы эту логику на серверную часть, возможно, в другую кодовую базу или язык программирования?
Пограничные вычисления спешат на помощь
Недавно я читал о клиенте Akamai, который столкнулся с точно такой же проблемой.
Они решили вынести логику манипулирования куки-файлами из внешнего интерфейса, но вместо того, чтобы поместить все это в свою внутреннюю систему, они абстрагировали ее на периферию.
«Черная пятница и Киберпонедельник являются важными событиями для [КЛИЕНТА], и его веб-сайту необходимо использовать кэширование для нескольких страниц кампании. Технология CDN позволяет [CUSTOMER]обеспечивать потребителям единообразный пользовательский интерфейс во время кампаний, в то время как EdgeWorkers манипулирует файлами cookie вместо исходного сервера. ”
Польза здесь была двоякой.
Во-первых, команда, отвечающая за управление и использование файлов cookie, может полностью владеть этой частью логики. Им не нужно было ждать, пока изменения будут реализованы бэкэнд-командой, потому что они могли просто отправить любые изменения, которые им были нужны, в какую-то пограничную функцию, за которую они отвечали. И неважно, какая была основная серверная технология, они могли продолжать использовать знакомый им язык — JavaScript.
Во-вторых, по причинам, упомянутым выше, эти файлы cookie необходимо было установить на серверной части. Для сравнения, если вы реализуете логику управления файлами cookie на исходном сервере, вы создаете больше работы для этого исходного сервера. Перемещая задания на пограничные серверы, вы можете уменьшить часть рабочей нагрузки, направляемой на источник, что может снизить затраты и/или повысить производительность и надежность других важных процессов.
Закрытие
Я не уверен, что этот пример будет особенно актуален для многих людей, поскольку это довольно нишевая проблема, с которой вы, вероятно, не сталкиваетесь на регулярной основе. Тем не менее, мне было интересно, и я решил поделиться. Это один из тех фрагментов информации, которые я предпочитаю скрывать на случай, если они мне когда-нибудь понадобятся.
Эта концепция не уникальна для Akamai, но если вы в настоящее время являетесь клиентом или хотите узнать больше о практической стороне вещей, я бы порекомендовал ознакомиться с [документацией EdgeWorkers] (https://techdocs.akamai.com/ Edgeworkers/документы/). Есть специальный раздел для работы с их [встроенным модулем файлов cookie] (https://techdocs.akamai.com/edgeworkers/docs/cookies).
Большое спасибо за чтение. Если вам понравилась эта статья, пожалуйста, поделитесь ею, и если вы хотите знать, когда я опубликую больше статей, подпишитесь на мою рассылку или подпишитесь на меня в Twitter. Ваше здоровье!
Первоначально опубликовано на austingil.com.
Оригинал