Любой CDN, который может кэшировать данные WebSocket

#caching #websocket #cdn #cloudflare #akamai

#кэширование #websocket #cdn #cloudflare #akamai

Вопрос:

Есть ли какой-либо поставщик CDN, способный предложить какое-либо кэширование WebSocket либо через «пограничных рабочих», либо через другой механизм?

Я бы хотел, чтобы некоторые запросы WebSocket, которые мы делаем, могли обслуживать их как можно ближе к пользователю, не настраивая всю нашу инфраструктуру в нескольких центрах обработки данных.

Ответ №1:

Нет, нет способа кэшировать сообщения WebSocket — например, протокол не имеет никаких «адресуемых» ресурсов, таких как, например, HTTP. HTTP имеет более встроенный дизайн для кэширования в протоколе, например GET , запросы обычно кэшируются, но не POST запросы, и вы можете добавлять к запросам заголовки, связанные с кэшем, например, как долго он может кэшироваться и так далее.

По этой причине я бы рекомендовал использовать HTTP вместо WebSocket, если у вас нет варианта использования, когда вам действительно нужно использовать WebSocket. С HTTP у вас есть доступ ко всей инфраструктуре CDN и прокси, доступной по всему миру.

Становится все более распространенным использование, например, событий, отправляемых сервером, потоков HTTP / 2 или, возможно, GRPC для случаев использования, когда WebSockets использовался раньше. Предстоящий протокол WebTransport, вероятно, будет заменой (?) — По крайней мере, когда большая часть другого трафика — HTTP / 3.

Ответ №2:

Во-вторых, кэширование сообщений WebSocket невозможно / не рекомендуется. Я бы посоветовал вам подумать о преобразовании обмена сообщениями WebSocket в форму пограничных вычислений.

Например: Akamai предлагает EdgeWorkers. CloudFlare предлагает Workers. AWS предлагает Lambda.

Это может дать вам возможность обрабатывать ваш рабочий процесс вместо того, чтобы полагаться на WebSockets.

/ Майк (и да, я работаю в Akamai)