Фон
Я розміщую статичний сайт на S3, з CloudFront вгорі. У мене є проблема з моїми HTML-файлами.
Відповідно до поширених запитань CloudFront :
Amazon CloudFront використовує ці заголовки кеш-керування, щоб визначити, наскільки часто потрібно перевіряти походження для оновленої версії цього файлу
Що я робив до цих пір
Зважаючи на це, я встановив HTML-файли у своєму відрі S3, щоб додати до таких заголовків:
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Під час мого першого дзвінка до мого samplefile.htm
я бачу наступні заголовки відповідей (я виключив очевидні заголовки (наприклад Content-Type
) для того, щоб продовжувати:
Cache-Control:no-cache, no-store, max-age=0, must-revalidate
Date:Sat, 10 Dec 2011 14:16:51 GMT
ETag:"a5890ace30a3e84d9118196c161aeec2"
Expires:Fri, 01 Jan 1990 00:00:00 GMT
Last-Modified:Sat, 10 Dec 2011 14:16:43 GMT
Server:AmazonS3
X-Cache:Miss from cloudfront
Як бачите, мій Cache-Control
заголовок знаходиться там. Проблема полягає в тому, що якщо я оновлюю цей файл і оновлююсь, я отримую кешований вміст (а не останній файл), і я бачу, що CloudFront обслуговує кешовану версію, переглядаючи заголовки відповідей:
X-Cache:Hit from cloudfront
Резюме / питання
Зважаючи на вищезазначене, як я можу досягти автоматичного пошуку останнього HTML при використанні CloudFront?
Відповідно до його поширених запитань, я повинен бути в змозі зробити це з заголовками кеш-керування, але я не можу зробити так, що це працює.
Дотримуючись відповідей нижче
Врешті-решт я вирішив змінити свій www CNAME, щоб безпосередньо вказати на моє відро S3. Потім додали новий CNAME під назвою "статичний", який вказує на CloudFront.
Це означає, що HTML є прямим від S3, який потім має всі свої посилання CSS / JS / IMG, які вказують на static.mydomain.com