CDN访问与直接访问源站得到的结果不一样

问题描述:

        当通过CDN访问同一个接口名称,但使用不同的参数(无论是参数类型还是参数个数),返回的数据仍然是一样的


原因分析:

1.缓存键配置不正确

  • CDN的缓存键未包含查询参数,导致CDN认为不同参数的请求是相同的,从而返回相同的缓存内容。

2.缓存策略设置问题

  • CDN的缓存策略设置为忽略某些参数,或者缓存策略过于宽松,导致参数变化未能反映在缓存中。

3.服务器响应头设置不正确

  • 服务器响应头(例如Cache-ControlVary头)未正确配置,使得CDN缓存了相同的响应。

4.CDN配置忽略查询参数

  • CDN配置中明确指定了忽略查询参数或只缓存特定的参数集合。

解决方案:

1.检查和修改缓存键配置

  • 登录阿里云CDN控制台,找到对应域名的缓存配置,确认缓存键中是否包含了查询参数。如果没有,需要将查询参数包含在缓存键中。

操作步骤

  • 进入阿里云CDN控制台。
  • 选择“域名管理”。
  • 找到对应的域名,点击“配置”。
  • 进入“缓存配置”,查看并修改缓存键设置,确保包含查询参数

2.修改缓存策略

  • 如果缓存策略设置为忽略某些参数,修改策略以包括所有相关参数

3.调整服务器响应头

  • 确认服务器响应中包含合适的Cache-ControlVary头,以指导CDN正确缓存不同参数的响应。

  • 示例

    Cache-Control: private, max-age=0, no-cache

    Vary: Accept-Encoding, User-Agent, X-Requested-With

4.清除CDN缓存

  • 在CDN控制台中清除缓存,确保测试时不会受到旧缓存的影响

5.使用CDN调试工具

  • 阿里云提供了CDN调试工具,可以通过这些工具查看请求的缓存命中情况,进一步诊断问题。

示例:修改缓存键配置

假设你有一个API接口 https://xxx.com/api/data,并且希望缓存键包含所有的查询参数:

  1. 登录阿里云CDN控制台。

  2. 进入“域名管理”。

  3. 选择你的域名并进入“配置”。

  4. 找到“缓存配置”部分。

  5. 修改缓存键设置,使其包含查询参数。

         例如:在“缓存键设置”中,选择“包含所有查询参数”。

通过这些步骤,你可以确保不同参数的请求被CDN正确识别并分别缓存。

最近更新

  1. 怎么把数据转换成百度k线图

    2024-06-06 21:18:02       0 阅读
  2. 什么是软件定义安全SDSec

    2024-06-06 21:18:02       0 阅读
  3. [数仓]十、离线数仓(安全集群实战)

    2024-06-06 21:18:02       0 阅读
  4. pycharm中快捷键汇总

    2024-06-06 21:18:02       1 阅读
  5. Python爬虫原理以及3个小案例(源码)

    2024-06-06 21:18:02       1 阅读
  6. PySpark 中 RDD 与 DataFrame 的不同应用场景

    2024-06-06 21:18:02       1 阅读

热门阅读

  1. Lua封装函数模块并由其他模块调用

    2024-06-06 21:18:02       10 阅读
  2. 设计模式之责任链模式

    2024-06-06 21:18:02       8 阅读
  3. GPT-4o横空出世,如何评价GPT-4o?

    2024-06-06 21:18:02       7 阅读
  4. 计算机网络 3.7广域网

    2024-06-06 21:18:02       9 阅读
  5. Ubuntu下搭建与配置PPPoE server

    2024-06-06 21:18:02       9 阅读
  6. 嵌入式Qt开发C++基础编程

    2024-06-06 21:18:02       8 阅读
  7. 【PECL】在扩展中实现 autoload

    2024-06-06 21:18:02       10 阅读
  8. Opengrok代码在线查看平台

    2024-06-06 21:18:02       9 阅读
  9. leetcode部分简单题题解

    2024-06-06 21:18:02       9 阅读