Використання CDN з Webpack Encore
Дата оновлення перекладу 2024-05-27
Використання CDN з Webpack Encore
Ви розгортаєте на CDN? Це чудово :) Після того, як ви переконалися, що ваші побудовані файли завантажено на 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('public/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 - наприклад, шляхом їх завантаження або за допомогою "origin pull", коли ваша CDN витягує ресурси безпосередньо з вашого веб-сервера.
Вам необхідно переконатися, що теги script
і link
, які ви додаєте на свої сторінки,
також використовують CDN. На щастя, шляхи
entrypoints.json оновлюються,
щоб містити повну URL-адресу до CDN.
При розгортанні в підкаталог вашої CDN, ви повинні додати шлях в кінці URL-адреси -
наприклад, Encore.setPublicPath('https://my-cool-app.com.global.prod.fastly.net/awesome-website')
згенерує URL ресурсів на кшталт https://my-cool-app.com.global.prod.fastly.net/awesome-website/dashboard.js
.
Якщо ви використовуєте Encore.enableIntegrityHashes()
і ваша CDN та ваш домен
не мають same-origin, вам може знадобитися встановити опцію crossorigin
у вашій
конфігурації webpack_encore.yaml у значення anonymous
або use-credentials
для подолання помилок CORS.