Skip to content

Files

Latest commit

5e567e4 · Oct 29, 2024

History

History

add-cache-control-header

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Aug 27, 2021
Oct 29, 2024
May 4, 2021

Add Cache-Control header

CloudFront Functions event type: viewer response

This function adds a Cache-Control header that is sent to the browser in the response from CloudFront. If your origin does not send a Cache-Control header, and you are relying on CloudFront's cache behaviors to control CloudFront caching, CloudFront will not send a Cache-Control header to the browser for browser caching. This function adds a Cache-Control header for the browser so that content can be cached locally in the browser. This reduces CloudFront costs, while giving users of your site better performance.

If your origin sends a Cache-Control header in responses to CloudFront, this header is passed to the browser. In this case, this function is not required.

Important: Set the max-age directive to an appropriate value for your specific needs.

Testing the function

To validate that the function is working as expected, you can use the provided test-event.json test object. To test, you can use the test-function CLI command that will look something like this:

$ aws cloudfront test-function --if-match EXXXXXXXXXXXX --name add-cache-control-headers --event-object fileb://add-cache-control-header/test-event.json

If the function has been set up correctly, you should see a result similar to the following with the cache-control header being added in the FunctionOutput JSON object:

{
    "TestResult": {
        "FunctionSummary": {
            "Name": "cache-control-headers",
            "Status": "UNPUBLISHED",
            "FunctionConfig": {
                "Comment": "",
                "Runtime": "cloudfront-js-1.0"
            },
            "FunctionMetadata": {
                "FunctionARN": "arn:aws:cloudfront::1234567890:function/add-cache-control-headers",
                "Stage": "DEVELOPMENT",
                "CreatedTime": "2021-04-08T22:46:57.566000+00:00",
                "LastModifiedTime": "2021-04-09T17:50:11.730000+00:00"
            }
        },
        "ComputeUtilization": "20",
        "FunctionExecutionLogs": [],
        "FunctionErrorMessage": "",
        "FunctionOutput": "{\"response\":{\"headers\":{\"server\":{\"value\":\"CustomOriginServer\"},\"content-length\":{\"value\":\"9593\"},\"content-type\":{\"value\":\"text/html; charset=UTF-8\"},\"cache-control\":{\"value\":\"public, max-age=63072000;\"}},\"statusDescription\":\"OK\",\"cookies\":{\"loggedIn\":{\"attributes\":\"Secure; Path=/; Domain=example.com; Expires=Wed, 05 Jan 2024 07:28:00 GMT\",\"value\":\"true\"},\"id\":{\"attributes\":\"Expires=Wed, 05 Jan 2024 07:28:00 GMT\",\"value\":\"a3fWa\"}},\"statusCode\":200}}"