Александр Яшин

RU | EN

Как REST может сделать ваш сайт быстрым

Архитектуру REST часто ошибочно путают с некой методикой именования URL на сайте и распределения функций между GET, POST, PUT и DELETE запросами, что в корне не верно. REST — это мощнейший архитектурный стиль, затрагивающий всё ваше приложение, концентрирующийся на производительности и совместимости с другими веб-системами.

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

Унифицированный программный интерфейс

Как-то мне пришел на поддержку проект с большим каталогом товаров. У каждого товара была своя страничка с фотографиями, описанием, отзывами и т.д. Вроде бы всё как обычно. Но клиент жаловался на то, что на почту в большом объеме льются письма с информацией о выставлении товарам оценок. И правда: на сайте у каждого товара было много оценок, большинство — средненькие. На что я обратил внимание: звездочки в голосовалке товаров были оформлены ссылками на php-скрипт, который запоминал оценку и высылал письмо клиенту с уведомлением. Поисковый робот заходил на страничку товара, видел набор ссылок и начинал переходить по этим ссылкам, чтобы их проиндексировать, таким образом запуская скрипт выставления оценки. К слову, он заходил по всем ссылкам со звездочек равномерно, поэтому и оценки получались средние.

Почему это происходило? Поисковый робот воспринимал GET-запросы, которые он делает, как безопасные и идемпотентные. Но обработчик этого GET-запроса был небезопасным и неидемпотентным.

Таблица соответствия HTTP-метода безопасности и идемпотентности
HTTP-Метод Безопасный Идемпотентый
GET Да Да
HEAD Да Да
OPTIONS Да Да
PUT Нет Да