首页 > 其他分享 >CloudFront分发优化:最佳实践与性能调优

CloudFront分发优化:最佳实践与性能调优

时间:2024-02-02 14:31:59浏览次数:23  
标签:分发 缓存 CloudFront ID 调优 distribution config id

引言

Amazon CloudFront作为AWS的全球内容分发网络(CDN)服务,为用户提供了高效、安全、可扩展的内容传递体验。然而,要确保CloudFront分发能够发挥最佳性能,需要深入了解其配置和优化选项。在本博文中,我们将探讨一系列CloudFront的优化最佳实践,以确保您的内容以最快、最可靠的方式传递给全球用户。

1. 启用Origin Shield

Origin Shield是CloudFront的一个关键功能,它通过在特定区域设置缓存,减轻源服务器的负担,提高响应速度。通过Boto3库和Python,您可以轻松地启用Origin Shield并设置所需的区域。以下是完整示例:

import boto3

# 初始化CloudFront客户端
client = boto3.client('cloudfront')

def update_cloudfront_distribution(distribution_id):
    # 获取当前的分发配置和ETag
    response = client.get_distribution_config(Id=distribution_id)
    distribution_config = response['DistributionConfig']
    etag = response['ETag']

    # 为第一个源启用Origin Shield并设置区域
    distribution_config['Origins']['Items'][0]['OriginShield'] = {
        'Enabled': True,
        'OriginShieldRegion': 'us-east-1'  # 设置Origin Shield区域为“US East (N. Virginia)”
    }

    # ...(省略了更新缓存策略和HTTP版本的代码)...

    # 使用更新后的配置更新CloudFront分发
    client.update_distribution(
        DistributionConfig=distribution_config,
        Id=distribution_id,
        IfMatch=etag  # 使用获取配置时返回的ETag
    )

# CloudFront分发ID
distribution_id = 'EFNUHDVRKDL39'
update_cloudfront_distribution(distribution_id)

2. 缓存策略的精细控制

CloudFront提供了强大的缓存策略功能,可根据具体需求进行精细控制。在脚本中,我们展示了如何通过Boto3和Python更新默认缓存行为的缓存策略和源请求策略。以下是完整示例:

# 预定义的CachingOptimized缓存策略ID
caching_optimized_policy_id = '658327ea-f89d-4fab-a63d-7e88639e58f6'
# 推荐的源请求策略ID
managed_caching_optimized_origin_request_policy_id = '216adef6-5c7f-47e4-b989-5492eafa07d3'

# 更新默认缓存行为的缓存策略ID和源请求策略ID
distribution_config['DefaultCacheBehavior']['CachePolicyId'] = caching_optimized_policy_id
distribution_config['DefaultCacheBehavior']['OriginRequestPolicyId'] = managed_caching_optimized_origin_request_policy_id

# 移除与缓存策略不兼容的TTL设置和ForwardedValues
for key in ['MinTTL', 'MaxTTL', 'DefaultTTL', 'ForwardedValues']:
    distribution_config['DefaultCacheBehavior'].pop(key, None)

3. 使用HTTP/2和HTTP/3

随着Web技术的发展,使用更高效的协议是提高性能的重要一环。在CloudFront中,我们通过Boto3和Python将HTTP版本更新为'http2and3',以充分利用最新的协议优势。以下是完整示例:

# 更新HTTP版本为 'http2and3'
distribution_config['HttpVersion'] = 'http2and3'

4. 示例用法

在博文中,我们提供了一个完整的示例,演示了如何使用Boto3和Python更新CloudFront分发的配置。您只需替换分发ID和根据实际需求调整其他配置,即可轻松应用这些优化。

# CloudFront分发ID
distribution_id = 'EFNUHDVRKDL39'
update_cloudfront_distribution(distribution_id)

完整代码

import boto3

# 初始化CloudFront客户端
client = boto3.client('cloudfront')

def update_cloudfront_distribution(distribution_id):
    """
    更新CloudFront分发的Origin Shield区域、缓存策略和HTTP版本。

    :param distribution_id: CloudFront分发的ID。
    """
    # 获取当前的分发配置和ETag
    response = client.get_distribution_config(Id=distribution_id)
    distribution_config = response['DistributionConfig']
    etag = response['ETag']

    # 为第一个源启用Origin Shield并设置区域
    distribution_config['Origins']['Items'][0]['OriginShield'] = {
        'Enabled': True,
        'OriginShieldRegion': 'us-east-1'  # 设置Origin Shield区域为“US East (N. Virginia)”
    }

    # 预定义的CachingOptimized缓存策略ID
    caching_optimized_policy_id = '658327ea-f89d-4fab-a63d-7e88639e58f6'
    # 推荐的源请求策略ID
    managed_caching_optimized_origin_request_policy_id = '216adef6-5c7f-47e4-b989-5492eafa07d3'

    # 更新默认缓存行为的缓存策略ID和源请求策略ID
    distribution_config['DefaultCacheBehavior']['CachePolicyId'] = caching_optimized_policy_id
    distribution_config['DefaultCacheBehavior']['OriginRequestPolicyId'] = managed_caching_optimized_origin_request_policy_id

    # 移除与缓存策略不兼容的TTL设置和ForwardedValues
    for key in ['MinTTL', 'MaxTTL', 'DefaultTTL', 'ForwardedValues']:
        distribution_config['DefaultCacheBehavior'].pop(key, None)

    # 更新HTTP版本为 'http2and3'
    distribution_config['HttpVersion'] = 'http2and3'

    # 使用更新后的配置更新CloudFront分发
    client.update_distribution(
        DistributionConfig=distribution_config,
        Id=distribution_id,
        IfMatch=etag  # 使用获取配置时返回的ETag
    )

# CloudFront分发ID
distribution_id = 'EFNUHDVRKDL39'
update_cloudfront_distribution(distribution_id)

结论

通过深入了解CloudFront的优化选项,并结合Boto3和Python的强大功能,您可以轻松地实施一系列性能提升措施。CloudFront分发的优化不仅仅关乎性能,还关乎用户体验和可靠性。通过采用本文中提到的最佳实践,您可以确保您的内容以最佳状态传递给全球用户,为他们提供卓越的在线体验。

标签:分发,缓存,CloudFront,ID,调优,distribution,config,id
From: https://blog.51cto.com/jiemei/9551644

相关文章

  • 参数调优 -- 并发参数innodb_thread_concurrency
    innodb_thread_concurrencyinnodb_thread_concurrency是动态参数可以随时修改64个活跃连接以内直接配0高压场景需要从高到低测试,找到最优值高压场景下较低的值可以明显提高写入QPS的占比(高频率的读被限制了)innodb_thread_sleep_delay(微秒)定义在开始排队前,等多久加入队列innodb_......
  • 银行总部文件分发的三大痛点,一招即可解决!
    银行业在我国经济发展和社会运转中承载着举足轻重的作用和意义。不少大型商业银行在全国或全球范围内都设立了不同的分支机构及办事处,业务开展中需要数据在不同机构间流转,就产生了银行总部文件分发需求。银行总部文件分发对于银行业来说是普遍的需求,从总部-分支机构-网点,不同管......
  • 代码随想录 day34 K 次取反后最大化的数组和 加油站 分发糖果
    K次取反后最大化的数组和按照元素的绝对值大小进行排序把绝对值大的且小于0的取反如果还能取反那么奇数次的话就把绝对值小的取反偶数次不用管加油站首先如果总油量小于总消耗是一定不能跑完的这里的思路是如果[0,i]区间不能油量小于消耗那么就尝试从下一个i+1......
  • Hive参数调优:如何控制reduce个数与参数调优(合并小文件和拆分大文件)
    reduce的个数一般最后决定了输出文件的个数,如果想多输出文件的个数(这样文件变小,但有可能程序变慢),那么可以人为增加reduce个数。如果想减少文件个数,也可以手动较少reduce个数(同样可能程序变慢)。但实际开发中,reduce的个数一般通过程序自动推定,而不人为干涉,因为人为控制的话,如果使用......
  • [转帖]Oracle SQL调优系列之cursor学习笔记
    https://cloud.tencent.com/developer/article/1995387 文章目录-[一、oracle库缓存](https://cloud.tencent.com/developer)-[1.1、库缓存简介](https://cloud.tencent.com/developer)-[1.2、相关概念](https://cloud.tencent.com/developer)......
  • R语言KNN模型分类信贷用户信用等级参数调优和预测可视化
    全文链接:https://tecdat.cn/?p=34941原文出处:拓端数据部落公众号本文主要介绍了如何帮助客户通过读取数据、查看部分数据、转换数据为因子并将数值变量归一化、进行描述性分析、建立knn模型等步骤对数据进行分析。通过分别选择不同的k值进行建模,并对比它们的准确度,找到最优的参......
  • django路由分发1中RegexURLResolver, RegexURLPattern和2中URLResolver, URLPattern
    django路由分发1中RegexURLResolver,RegexURLPattern和2中URLResolver,URLPatternfromdjango.confimportsettingsfromdjango.utils.module_loadingimportimport_stringfromdjango.urlsimportRegexURLResolver,RegexURLPatternfromcollectionsimportOrderedDict......
  • app免费签名分发平台应用cdn分发平台为什么会免费?虾分发分析报告
    近年来,随着移动应用的迅速发展,免费app签名分发平台和应用CDN分发平台日益受到开发者和用户的关注。本报告旨在分析这些平台的商业模式,探讨其利润点、营销点以及所采取的优势。 一、商业模式分析:广告收入:免费app签名分发平台和应用CDN分发平台主要通过展示广告来获取收入。广......
  • 用户画像系列——在线服务调优实践
    前面文章讲到画像的应用的几个方面,其中画像的在线服务应用主要是在推荐场景、策略引擎场景,这两部分场景都是面向线上的c端服务。推荐场景:根据不同的用户推荐不同的内容,做到个性化推荐,需要读取画像的一些偏好数据,推荐感兴趣的内容。策略引擎:根据用户的属性进入到不同的页面或者给......
  • 总部文件分发至下级,如何让安全和效率双管齐下?
    不少大型企业为了方便业务在全国、乃至全球范围内的开展,在管理组织结构上,会设立总部-分部-办事处/网点等多层级的结构,其中分支部位于异地,在拥有一定的独立管理权的同时,也受到总部的统一管控。在日常经营中,总部与分支之间存在着较为频繁且紧密的数据互动关系,数据流转保证了总分支之......