У меня есть приложение Node.JS Meteor, которое я связываю с webpack , которое генерирует файл CSS с хэшем в имени: [hash] .bundle.css . Я могу установить publicPath для домена CDN:
output: {
publicPath: 'https://xxx.cloudfront.com/',
},
В Heroku комплект будет сгенерирован в промежуточной среде, а сгенерированный slug будет перемещен в живую среду (включая файл css).
Когда в CSS произойдет изменение, в промежуточной среде будет новый хэш . При открытии сайта (тестирование ...) облачный фронт будет запрашивать у этого файла живую среду, но сервер Node.JS отвечает приложением-HTML , которое выдает не найденный ошибка в браузере.
Идея: сделать CDN откатом к постановке
Это рекомендуется в документации к герою. Но поскольку сервер приложений не отвечает с ошибкой 404 http, cloudfront не будет смотреть на промежуточный сервер.
Проблема: сообщение об ошибке 404 http для отсутствующих файлов
Этот звук не сложный. Meteor webapp использует connect , а я использую FlowRouter на стороне клиента, поэтому я могу:
WebApp.connectHandlers.use('/', function(req, res, next) {
if(FlowRouter.matchPath(req.url).route.name == 'not-found') {
res.writeHead(404);
res.end('Not found.');
} else {
return next();
}
});
Но: есть много других connectHandlers
, которые мне нужно знать, и проверять файловую систему. Я пытался идти по этому пути, но он кажется бесконечным, требует интенсивного обслуживания и не является надежным.
Идея: Использование Метеора ?meteor_css_resource=1
Существует Специальная обработка для метеора файла css с параметром запроса xx.css?meteor_css_resource=1
, но это не будет считаться ошибкой 404 для CDN, чтобы выполнить запрос на повторную подготовку.