Kong的插件: Proxy Caching(入门篇)
程序员文章站
2024-03-24 18:50:52
...
简述
这是一个缓存的插件,简单说就是第一次把一些内容(图片,内容)缓存到kong,后续的请求只需在Kong取数据,不用再向后端请求数据。
操作起来
环境准备
你应该有一个可以正常使用service和route。如果没有,可以参考https://blog.csdn.net/u014686399/article/details/100084613。我的试验也是参考这个。
启用插件
/routes/1972af43-5cb0-4c84-b15e-b96a2da52893/plugins POST
{
"name":"proxy-cache",
"config":{
"strategy": "memory",
"content_type": ["text/html; charset=UTF-8", "image/jpeg"]
}
}
- 1972af43-5cb0-4c84-b15e-b96a2da52893 这是route的ID
- proxy-cache 这是插件的名字
- memory这是缓存存储的地方。如果你的缓存很大,可以使用redis (官网)[https://docs.konghq.com/hub/kong-inc/proxy-cache/]
- content_type, 这是指定缓存什么类型的资源。默认是text/plain, application/json,由于试验的原因我需要放开上面的这两个类型
测试一下
- x-cache-status的状态说明你的资源是不是走缓存了。只有
Hit
状态的时候才说明是走缓存了- 注意要禁用浏览器的缓存,否则会走浏览的缓存机制,你会看到x-cache-status的状态是ByPass
- 可以看一下后端服务的日志,只有第一次的时候才会接收到请求,后面都不会接收到请求了
Cache Status
- Miss, 这个是没有走缓存的。是说明我们的请求应该可以走缓存的(Method,content_type,vary_headers , vary_query_params 满足了插件配置),但是这个资源在缓存中不存在。一般第一次请求的时候会有这种情况
- Hit, 这个不多说,就是命中了
- Refresh,这个是说,我们的请求满足了要求,但是缓存中资源到期了(config.cache_ttl默认是300s),需要再次请求一下后端
- Bypass,这个也不多说,就是我们的请求不满足插件的配置,不会走Kong的缓存机制
Storage TTL
kong有一个config.storage_ttl参数,这个是控制缓存中的资源什么时候没用的。如果时间超过了cache_ttl但是没有超过storage_ttl,后面的 请求不走缓存了,但是缓存中的资源还是存在。 这样做的意义就是我们可以创造我们自己的缓存机制,而不被kong的缓存机制影响。
先写到这里了,有问题进QQ群630300475