Вчера мы опубликовали версию 2.0 CDN, релиз, набитый новыми функциями и обновлениями существующих функций. В этой статье мы рассмотрим некоторые из основных изменений.

Если вы предпочитаете сразу приступить к делу, вы можете обновить существующий проект CDN, чтобы использовать версию 2.0.0, или установить новый с помощью DADI CLI.

$ dadi cdn new my-new-cdn

Поддержка плагинов

Самая большая новость - это поддержка модульных плагинов. Наша команда инженеров в значительной степени сосредоточилась на гибкости и модульности различных микросервисов в стеке, и точно так же, как пользовательские функции могут быть добавлены в API с помощью хуков и в Интернет с помощью событий, CDN теперь поддерживает модульные плагины.

Плагин существует как файл JavaScript в каталоге workspace, точно так же, как рецепт или маршрут, и позволяет приложениям определять настраиваемую логику, которая может делать что угодно, от динамического изменения параметров манипуляции с изображениями до начала обработки, до расширения возможностей обработки изображений с помощью новые операции и даже другие двигатели.

Вскоре мы поделимся статьей, в которой более подробно исследуются возможности подключаемых модулей CDN, а также объясняется, как вы собираетесь создавать свои собственные.

Преобразование JavaScript на грани

Версия 2.0 также представляет экспериментальную поддержку преобразования JavaScript на периферии, позволяя разработчикам писать свои приложения с использованием современных функций ES6 и ES7 и позволяя CDN выяснять, поддерживает ли их запрашивающий браузер, делая при необходимости перевод на ES5.

На прошлой неделе мы выпустили статью, в которой более подробно рассказывается о том, почему интересное преобразование JavaScript на периферии и как мы это делаем.

Упрощенные пути URL-адресов для ресурсов

Традиционно для доступа к ресурсу, не являющемуся изображением, требовалось указать тип ресурса и числовой флаг для статуса сжатия в URL-адресе. Например, для доступа к файлу с именем test.js в исходном состоянии соответствующий URL-адрес будет /js/0/test.js. С CDN 2.0 это становится просто /test.js.

Пара примеров того, чем новый формат отличается от старого:

  • /js/0/test.js -> /test.js
  • /js/1/test.js -> /test.js?compress=1
  • /css/0/test.css -> /test.css
  • /css/1/sub-directory/test.css -> /sub-directory/test.css?compress=1

Старый формат по-прежнему поддерживается, но он объявлен устаревшим и будет удален в одном из следующих основных выпусков.

Поддержка любого типа актива

До сих пор CDN могла обслуживать четыре типа ресурсов, каждый из которых поддерживал свой набор операций манипулирования: изображения, JavaScript, CSS и шрифты. Если вы попытаетесь получить доступ к любому другому типу файла, например к PDF-файлу или видео, CDN выдаст ошибку.

CDN 2.0 добавляет общий обработчик файлов, что на практике означает, что вы можете обслуживать ресурсы любого типа. Даже если для определенного типа файла нет доступных операций манипуляции, вы все равно можете в полной мере воспользоваться уровнем кэширования CDN (и правильный тип MIME также будет добавлен в ответ).

Поддержка WebP

CDN 2.0 также добавляет поддержку формата изображений WebP, который благодаря эффективному алгоритму сжатия может создавать файлы на 25-34% меньше, чем PNG или эквиваленты JPEG.

Чтобы начать использовать его, вы можете добавить его в рецепт, используя свойство format в блоке settings, или просто указать его как выходной формат в URL-адресе (например, https://cdn.somedomain.tech/samples/dog.jpeg ? format = webp ).

Исходное соотношение сторон сохраняется по умолчанию

В версиях 1.x любые запросы, в которых соотношение сторон выходного изображения не является явным (т. Е. Указан только один из размеров и параметр ratio не поддерживается), приводят к обрезанному изображению. , поскольку отсутствующий размер напрямую заменяется соответствующим размером исходного изображения.

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

В версии 2.0 исходное соотношение сторон изображения всегда сохраняется, если соотношение сторон вывода не указано явно. В результате для запроса с новой шириной x CDN вычислит соответствующую высоту, чтобы сохранить соотношение сторон и не обрезать изображение.

Чтобы получить прежнее поведение, потребители могут добавить resizeStyle=aspectfill к своим запросам.

Это единственное критическое изменение в выпуске.

Прекращение поддержки устаревшего формата URL

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

Разработчикам рекомендуется обновить свои приложения до нового формата, поскольку формат URL-адреса пути будет удален в следующем основном выпуске.

Подведение итогов

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

В ответ, пожалуйста, расскажите нам все об удивительных вещах, которые вы с его помощью создаете? ❤️

Автор: Эдуардо Бусас, главный инженер DADI. Эдуардо возглавляет разработку нескольких веб-сервисов DADI, включая DADI CDN.