Использование CDN

Вы развёртываете приложение в CDN? Это отлично :) - сконфигурировать для этого Encore очень легко. Как только вы убедитесь в том, что ваши созданные файлы загружены в CDN, сконфигурируйте его в Encore:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
// webpack.config.js
// ...

Encore
    .setOutputPath('web/build/')
    // в режиме разработки не используйте CDN
    .setPublicPath('/build');
    // ...
;

+ if (Encore.isProduction()) {
+     Encore.setPublicPath('https://my-cool-app.com.global.prod.fastly.net');
+
+     // гарантируйте, что ключи в manifest.json *всё ещё*
+     // имеют префикс build/
+     // (например, "build/dashboard.js": "https://my-cool-app.com.global.prod.fastly.net/dashboard.js")
+     Encore.setManifestKeyPrefix('build/');
+ }

Вот и всё! Внутренне, Webpack теперь будет знать, что надо загружать ресурсы из вашего CDN - например, https://my-cool-app.com.global.prod.fastly.net/dashboard.js.

Note

Помещение ресурсов в CDN - это всё ещё ваша ответственность. Например, загружая их или используя "извлечение источника", где ваш CDN извлекает ресурсы напрямую из вашего веб-сервера.

Вам нужно убедиться в том, что теги script и link, которые вы включаете в ваши страницы, также используют CDN. К счастью, пути manifest.json обновлены так, чтобы указывать на CDN. В Symfony, если вы сконфигурировали Версионирование ресурсов, то вы закончили! Файл manifest.json включает полный URL CDN:

1
2
3
{# Теги вашего скрипта/ссылки вообще не должны изменяться для
   поддержки CDN #}
<script src="{{ asset('build/dashboard.js') }}"></script>

Эта документация является переводом официальной документации Symfony и предоставляется по свободной лицензии CC BY-SA 3.0.