Skip to content

网关缓存摘要 ​

定位 ​

生产环境可在 OpenResty(Nginx + Lua) 反向代理层对指定 GET 路径做 API 边缘缓存:网关判断 URL 白名单后,从 Redis 或 Memcached 读取已缓存的 HTTP 响应;未命中则回源至 Java 应用,并按 TTL 写回缓存。可配合 srcache 等模块实现。

ecshopx-java 仓库不内置、不发布上述 Lua 脚本与 Nginx 片段。 本节仅作可选网关缓存思路摘要;具体安装、路径、脚本维护由运维侧按 OpenResty 文档实施。

思路概要 ​

组件作用
OpenResty在 Nginx 反向代理层执行 Lua,决定 cache key、TTL、是否回源
Redis / Memcached存储序列化后的 HTTP 响应体
配置清单按 URL 配置 expire(秒),常见为小程序只读配置类接口(如 common/setting、pagestemplate 等)

典型流程:

  1. 请求进入 Nginx → Lua 判断 URL 是否命中缓存白名单;
  2. 命中则读 Redis/Memcached;未命中则 proxy_pass 到 Java 应用(如 127.0.0.1:18080);
  3. 回源成功后按 TTL 写回缓存;响应头可带 X-Cache: Hit/Miss 类标识。

与 Java 应用的关系 ​

  • Java 应用 无需 为网关缓存单独改代码;缓存的是完整 HTTP 响应(需注意鉴权:仅适合匿名或稳定公共 GET)。
  • 部署时 Nginx upstream 指向 ecshopx-java 监听端口(默认 18080)。
  • Redis 逻辑库 应该 与主业务库分离(cache 使用独立 database index),避免 flushdb 误伤业务 key。

OpenResty 官方:https://openresty.org/cn/

何时考虑网关缓存 ​

适合:读多写少、响应体较大、可容忍秒级延迟的公共配置接口。

不适合:强鉴权个性化接口、写操作、强一致读;此类应在应用层 Redis 缓存(见 应用缓存)或不做缓存。

相关章节 ​