Распределение Cloudfront не соблюдает заголовок управления кэшем - PullRequest
0 голосов
/ 31 марта 2020

Мой дистрибутив Cloudfront агрессивно кэширует мой index.html файл при первоначальном запросе GET. В то время как я использую версионные имена файлов для всех остальных файлов, я хочу получить самые свежие index.html для каждого запроса. Источник - это контейнер S3, и я загружаю свой файл, используя флаг --cache-control:

aws s3 cp index.html s3://buck/index.html --cache-control "max-age=0"

Когда вышеприведенное не сработало, я попытался:

aws s3 cp index.html s3://buck/index.html --cache-control "no-store"

Я проверил, что заголовки установлены на объекте S3:

> aws s3api head-object --bucket buck --key index.html
{
    "AcceptRanges": "bytes",
    "LastModified": "Tue, 31 Mar 2020 14:10:40 GMT",
    "ContentLength": 3265,
    "ETag": "",
    "CacheControl": "no-store",
    "ContentType": "text/html",
    "Metadata": {}
}

Что пахнет, что после Я изменяю элемент управления кэшем на no-store, , заголовки ответа в браузере по-прежнему показывают cache-control: max-age=0. Я также вижу x-cache: Miss from cloudfront, но я предполагаю, что можно ожидать? Открытие сайта в приватном окне показывает правильный заголовок ответа.

My CacheBehaviors для распространения:

{
    "Quantity": 1,
    "Items": [
        {
            "PathPattern": "index.html",
            "TargetOriginId": "hostingS3Bucket",
            "ForwardedValues": {
                "QueryString": false,
                "Cookies": {
                    "Forward": "none"
                },
                "Headers": {
                    "Quantity": 0
                },
                "QueryStringCacheKeys": {
                    "Quantity": 0
                }
            },
            "TrustedSigners": {
                "Enabled": false,
                "Quantity": 0
            },
            "ViewerProtocolPolicy": "redirect-to-https",
            "MinTTL": 0,
            "AllowedMethods": {
                "Quantity": 2,
                "Items": [
                    "HEAD",
                    "GET"
                ],
                "CachedMethods": {
                    "Quantity": 2,
                    "Items": [
                        "HEAD",
                        "GET"
                    ]
                }
            },
            "SmoothStreaming": false,
            "DefaultTTL": 0,
            "MaxTTL": 0,
            "Compress": true,
            "LambdaFunctionAssociations": {
                "Quantity": 0
            },
            "FieldLevelEncryptionId": ""
        }
    ]
}

По документам aws cloudfront похоже, что CloudFront и браузеры должны учитывать заголовки при добавлении источника Cache-Control: no-store. Я не уверен, что я делаю неправильно. Должен ли я сделать кэш недействительным? Я хотел бы понять это поведение, чтобы я мог обновлять свой сайт предсказуемым образом.

...