1、设置本地域名
- 为了跟线上环境类似,把ip统一设置成域名
- windows电脑
C:\Windows\System32\drivers\etc里的hosts文件设置域名
127.0.0.1 test.minigame.com
- 执行
ipconfig /flushdns,会显示Windows IP 已成功刷新DNS解析缓存
2、apisix安装
git clone https://github.com/apache/apisix-docker.git
cd apisix-docker/example
- 更改apisix的默认端口9080为80
- 执行运行命令
docker-compose -p docker-apisix up -d
3、开启本地web服务,设置路由
- 新增一个路由,
test.minigame.com域名默认指向本地其他服务,这里假设访问是本地新开5501端口的微游中心服务
- 用浏览器打开
test.minigame.com,这时候显示的内容就是跟5501端口一致
注意:如果页面显示内容不一样,需要检测下是否是因为本地80端口被其他服务占用了。
4、安装apisix上的proxy-cache插件
- 你可以在 APISIX 配置文件
conf/config.yaml中添加你的缓存配置
proxy_cache: # 代理缓存配置
cache_ttl: 10s # 如果上游未指定缓存时间,则为默认缓存时间
zones: # 缓存的参数
- name: disk_cache_one # 缓存名称(缓存区域),管理员可以通过 admin api 中的 cache_zone 字段指定要使用的缓存区域
memory_size: 50m # 共享内存的大小,用于存储缓存索引
disk_size: 1G # 磁盘大小,用于存储缓存数据
disk_path: "/tmp/disk_cache_one" # 存储缓存数据的路径
cache_levels: "1:2" # 缓存的层次结构级别
- 在路由配置中,设置插件配置
{
"cache_key": ["$uri", "-cache-id"],
"cache_bypass": ["$arg_bypass"],
"cache_method": ["GET"],
"cache_http_status": [200],
"hide_cache_headers": true,
"no_cache": ["$arg_test"]
}
5、重新打开test.minigame.com,是否开启缓存数据
- 出现字段
Apisix-Cache-Status:EXPIRED
- 重新访问,出现
Apisix-Cache-Status: HIT,命中缓存
6、apisix默认缓存到硬盘
- 对于基于磁盘的缓存,不能动态配置缓存的过期时间,只能通过后端服务响应头
Expires或Cache-Control来设置过期时间,当后端响应头中没有Expires或Cache-Control时,默认缓存时间为 10 秒钟 - 可以手动设置
5501端口服务的强缓存,提高缓存时间 - 可以通过
disk_path设置缓存数据的路径 - 一些需要注意的现象:
- a、把缓存数据映射到本地磁盘,这时候日志会报找不到缓存数据而出现缓存miss