guideCKBox 本地化 CDN 集成

本指南将引导您完成将内容交付网络 (CDN) 集成到 CKBox 本地化应用程序的过程。CDN 通过在全球范围内将内容分发到多个服务器来帮助优化内容交付,从而缩短加载时间并改善用户体验。

# CDN 设置

# 先决条件

要为 CKBox 本地化设置 CDN,请确保您拥有

  1. CDN 提供商帐户的访问权限(例如,AWS CloudFront、Cloudflare 等)。
  2. 与您的 CKBox 本地化链接的自定义域(例如 https://yourdomain.com)。

# 基础设施设置

要设置 CDN,首先访问您的 CDN 提供商的仪表板,并创建一个新的分发(使用 Web 分发或根据您的提供商等效的分发)。

设置分发后,将其配置为与 CKBox 本地化一起使用。

将源域设置为您的域,例如 https://yourdomain.com,该域与您的本地化应用程序链接。

设置源域后,您可以选择设置要用于 CDN 的自定义域名 (CNAME),例如 cdn.yourdomain.com

如果您有自定义 SSL 证书,请设置它,并将更改应用于您的分发。

根据您的 CDN 提供商,分发可能需要一些时间才能完全激活。

# 定义缓存行为

为了指示 CDN 如何处理特定请求,需要设置缓存行为。在您的 CDN 提供商仪表板中,导航到缓存行为设置并选择路径模式。当 CDN 接收查看器请求时,请求的路径将与路径模式进行比较。

CKBox 使用以下路径来提供可使用 CDN 缓存的优化图像

  • /*/assets/*/file(此端点提供具有适当 MIME 类型的原始文件资产的内容)
  • /*/assets/*/images/*(此端点提供在 CKEditor 中编辑或嵌入网页上的响应式图像版本)

注意:这些特定路径用于缓存以提高不经常更改的资产的性能。缓存动态内容或经常更新的内容可能会导致用户获得过时数据。请注意,在定义缓存路径时,应仅考虑 CKBox 本地化的这两个端点。

# 设置缓存时间

建议缓存时间/边缘缓存 TTL 为 7 天。这在性能和内容新鲜度之间提供了最佳权衡。更长的缓存减少了对源服务器的重复请求,从而改善了响应时间。它还允许相对较新的内容,在性能和确保用户在合理的时间范围内收到更新的资产之间取得平衡。最后,更长的缓存时间可以节省成本,因为对源服务器的请求更少。

# 设置资产源

为了通过 CDN 重定向流量,图像的 URL 必须指向 CDN 的域。要设置资产源 URL,请在运行本地化 Docker 容器时设置 ASSETS_ORIGIN 环境变量,例如

docker run --init -p 8080:8080 \
    -e LICENSE_KEY=[your license key from CKEditor Ecosystem customer dashboard] \
    ...
    -e ASSETS_ORIGIN=[your CDN domain e.g. cdn.yourdomain.com] \

# 缓存失效

目前,仅当使用 AWS CloudFront 提供商时,CKBox 本地化才支持缓存失效。其他 CDN 提供商将需要通过 CKBox Webhooks 进行自定义客户端实现以进行 CDN 缓存失效。

要设置 AWS CloudFront 与 CKBox 本地化的集成,请在运行 Docker 容器时设置所需的 environment 变量

docker run --init -p 8080:8080 \
    -e LICENSE_KEY=[your license key from CKEditor Ecosystem customer dashboard] \
    ...
    -e CDN_DRIVER="cloudfront" \
    -e CDN_REGION=[your AWS CloudFront region] \
    -e CDN_ACCESS_KEY_ID=[your AWS access key id] \
    -e CDN_SECRET_ACCESS_KEY=[your AWS secret key] \
    -e DISTRIBUTION_ID=[your distribution id] \

资产失效专门发生在资产覆盖时。如果使用 POST:*/assets/{assetId} 端点覆盖资产的内容,或者在使用 CKBox 图像编辑器编辑图像时替换资产的内容,就会发生这种情况。