[Yandex Cloud documentation](../../../index.md) > [Yandex Cloud CDN](../../index.md) > [Step-by-step guides](../index.md) > Resources > Configuring resource caching

# Configuring resource caching

In the [CDN resource](../../concepts/resource.md) settings, you can [enable content caching](../../concepts/caching.md) to temporarily store the copies of files loaded from [origins](../../concepts/origins.md) on [CDN servers](../../concepts/points-of-presence.md).

If CDN server caching is enabled for a resource, files are copied from [origins](../../concepts/origins.md) to the server cache in the following cases:

* File the user has requested from [the CDN resource](../../concepts/resource.md) is not yet cached on the responding sever.
* [Lifetime](../../concepts/caching.md#server-side-cache-age) of the file’s copy cached on the CDN server has expired, and the file stored on the origin has changed (otherwise, the lifetime is prolonged for the same duration).
* You [prefetched](../../concepts/caching.md#prefetch) files from origins to the CDN server cache in the CDN resource settings.

To configure the caching parameters of a resource:

{% list tabs group=instructions %}

- Management console {#console}

  1. In the [management console](https://console.yandex.cloud), select the folder where your resource is located.

  1. Navigate to **Cloud CDN**.

  1. Click the resource name.

  1. Navigate to the **Caching** tab.

  1. In the top-right corner, click ![image](../../../_assets/console-icons/pencil.svg) **Edit**.

  1. Select and configure the caching options:

      * Under **CDN**:

          * Enable **CDN caching**.
          * Select the setting type: `Same as origin` or `Custom settings`.
          * Select the cache lifetime from the list.
          * Optionally, for the `Custom settings` setting type, set the cache lifetime for the required HTTP response codes.

      * Under **Browser**:

          * Enable **Browser caching**.

  1. Optionally, under **Additional settings**:

      * Select the option to ignore Cookies.
      * Select the option to ignore the Query parameters.

  1. Click **Save**.

- CLI {#cli}

  If you do not have the Yandex Cloud CLI yet, [install and initialize it](../../../cli/quickstart.md#install).

  The folder used by default is the one specified when [creating](../../../cli/operations/profile/profile-create.md) the CLI profile. To change the default folder, use the `yc config set folder-id <folder_ID>` command. You can also specify a different folder for any command using `--folder-name` or `--folder-id`. If you access a resource by its name, the search will be limited to the default folder. If you access a resource by its ID, the search will be global, i.e., through all folders based on access permissions.

  1. View the description of the CLI command to update a resource:

      ```bash
      yc cdn resource update --help
      ```

  1. Get a list of all resources in the default folder:

      ```bash
      yc cdn resource list --format yaml
      ```

     Result:

      ```text
      id: s0me1dkfjq********
      folder_id: s0mef01der7p********
      cname: testexample.com
      created_at: "2022-01-19T09:23:57.921365Z"
      updated_at: "2022-01-19T10:55:30.305141Z"
      active: true
      options:
        edge_cache_settings:
          enabled: true
          default value: "345600"
        cache_http_headers:
          enabled: true
          value:
          - content-type
          - content-length
          - connection
          - server
          - date
          - test
        stale:
          enabled: true
          value:
          - error
          - updating
        allowed_http_methods:
          value:
          - GET
          - POST
          - HEAD
          - OPTIONS
      origin_group_id: "89783"
      origin_group_name: My origins group
      origin_protocol: HTTP
      ssl_certificate:
        type: DONT_USE
        status: READY
      ```

  1. To change the cache lifetime, run:

      ```bash
      yc cdn resource update <resource_ID> \
        --cache-expiration-time <time> \
        --browser-cache-expiration-time <time> \
        --ignore-cookie true \
        --ignore-query-string
      ```

      Where:

      * `--cache-expiration-time`: Cache lifetime in seconds.
      * `--browser-cache-expiration-time`: Browser cache lifetime in seconds.
      * `--ignore-cookie`: If `true`, ignores cookies.
      * `--ignore-query-string`: Ignores query parameters.

      For more information about the `yc cdn resource update` command, see the [CLI reference](../../../cli/cli-ref/cdn/cli-ref/resource/update.md).

- Terraform {#tf}

  If you do not have Terraform yet, [install it and configure the Yandex Cloud provider](../../../tutorials/infrastructure-management/terraform-quickstart.md#install-terraform).
  
  
  To manage infrastructure using Terraform under a service account or user accounts (a Yandex account, a federated account, or a local user), [authenticate](../../../terraform/authentication.md) using the appropriate method.

  1. In the configuration file, describe the properties of the `yandex_cdn_resource` CDN resource you want to create:

      ```hcl
      resource "yandex_cdn_resource" "my_resource" {
        cname               = "cdn1.yandex-example.ru"
        active              = false
        origin_protocol     = "https"
        secondary_hostnames = ["cdn-example-1.yandex.ru", "cdn-example-2.yandex.ru"]
        origin_group_id     = yandex_cdn_origin_group.my_group.id
        options {
          edge_cache_settings    = "345600"
          browser_cache_settings = "1800"
          ignore_cookie          = true
          ignore_query_params    = false
        }
      }
      ```

      Where:

      * `cname`: Primary domain name used for content distribution. This is a required setting.
      * `active`: Flag indicating content availability to end users. `True`: CDN content will be available to clients. This is an optional setting. The default value is `true`.
      * `origin_protocol`: Protocol for origins. This is an optional setting. The default value is `http`.
      * `secondary_hostnames`: Additional domain names. This is an optional setting.
      * `origin_group_id`: [Origin group](../../concepts/origins.md) ID. This is a required setting. Use the ID from the description of the origin group in the `yandex_cdn_origin_group` resource.
      * The `options` section contains additional parameters of CDN resources:
         * `browser_cache_settings`: Browser cache lifetime in seconds. This is an optional setting. The default value is `0`.
         * `edge_cache_settings`: Cache lifetime for response codes in seconds. This is an optional setting. The default value is `345600`.
         * `ignore_query_params`: Ignore query parameters. This is an optional setting. The default value is `false`.
         * `ignore_cookie`: Ignore cookies. This is an optional setting. The default value is `false`.

      For more on the properties of `yandex_cdn_resource` in Terraform, see [this provider guide](../../../terraform/resources/cdn_resource.md).

  1. In the command line, navigate to the directory with the Terraform configuration file.

  1. Check the configuration using this command:
     ```
     terraform validate
     ```

     If the configuration is valid, you will get this message:

     ```
     Success! The configuration is valid.
     ```

  1. Run this command:
     ```
     terraform plan
     ```

     You will see a list of resources and their properties. No changes will be made at this step. Terraform will show any errors in the configuration.

  1. Apply the configuration changes:
     ```
     terraform apply
     ```

  1. Type `yes` and press **Enter** to confirm the changes.

     You can check the CDN resource update in the [management console](https://console.yandex.cloud) or using this [CLI](../../../cli/quickstart.md) command:

     ```
     yc cdn resource list
     ```

- API {#api}

  Use the [update](../../api-ref/Resource/update.md) REST API method for the [Resource](../../api-ref/Resource/index.md) resource or the [ResourceService/Update](../../api-ref/grpc/Resource/update.md) gRPC API call.

{% endlist %}

It may take up to 15 minutes for the new settings of the existing resource to apply to the CDN servers. After that, we recommend [purging the resource cache](purge-cache.md).