Избегайте кеширования Cloudfront моих угловых активов приложения
Я настроил CloudFront для моего веб-приложения с SSL-терминацией. Последующие развертывания не сразу обновляют производство, и для распространения изменений требуется много времени. Как сократить временной разрыв?
2 ответа
Решение
Есть несколько вариантов, доступных в CloudFront, а также вне, которые вы можете сделать, чтобы сократить время кэширования
- Запускать аннулирование после каждого развертывания (это занимает около 15 минут, но оно гарантирует, что кэш очищается после каждого развертывания, а также может быть автоматизировано с помощью CloudFront CLI)
- Уменьшение значения Cache TTL (не рекомендуется, так как это также сократит время кэширования, снизив производительность)
- Для каждого развертывания измените имена файлов, добавив случайное значение, а также ссылаясь на новое значение из приложения. Например /js/test_23434.js (Вы можете автоматизировать это с Gulp или любым автоматическим скриптом)
- Для каждого развертывания включите параметр запроса в URL-адрес пути к файлу, например /js/test.js?v=23434, а также включите пересылку параметров запроса в конфигурации поведения CloudFront.
Несколько вариантов:
- Вы можете установить более низкий TTL (в настройках облачного фронта) для своих активов.
- Если вы хотите кэшировать ваши объекты на более длительный срок; и ваши активы (html/css/js) меняются не часто, тогда вы можете удалить эти активы вручную, используя консоль CloudFront. Это можно сделать вручную с помощью консоли AWS, а также через интерфейс командной строки AWS.
- Самым чистым дизайном является размещение номера версии с каждым активом, таким как файл js/css. Используйте инструмент, подобный BURP, при создании своего углового приложения... что-то app.1235.js.. Всякий раз, когда ваш актив изменяется; версия изменится и автоматически будет загружена в свежем виде.