diff --git a/gvsds/apps/gerp/apps/subscription/views.py b/gvsds/apps/gerp/apps/subscription/views.py index b8d6f036..53914751 100644 --- a/gvsds/apps/gerp/apps/subscription/views.py +++ b/gvsds/apps/gerp/apps/subscription/views.py @@ -430,7 +430,8 @@ class SubscriptionRemoteAssetView(APIView): GET /API/Subscription/RemoteAsset// - 缓存:内容落库,TTL 24 小时;过期回源并按内容 SHA256 判断是否变更 - - 响应带 ETag(SHA256):浏览器条件请求命中即 304,不回源 + - 浏览器侧同为 24h(`Cache-Control: public, max-age=86400`),并带 ETag(SHA256): + 过期/硬刷新后走条件请求,内容未变即 304,不回源 - 免登录:与子服务器原本的公开资源一致(页面渲染前浏览器无法携带业务鉴权) """ @@ -452,9 +453,8 @@ class SubscriptionRemoteAssetView(APIView): response = HttpResponse(payload['Content'], content_type=payload['ContentType']) response['ETag'] = etag - # 主服务侧缓存 24h(回源频率上限);浏览器侧 1h + ETag 条件请求, - # 便于提供者更新后 1 小时内可见,又不会频繁打到子服务器。 - response['Cache-Control'] = 'public, max-age=3600' + # 主服务侧与浏览器侧同为 24h(ETag 保留:硬刷新/过期后仍走条件请求,命中即 304) + response['Cache-Control'] = f'public, max-age={REMOTE_ASSET_TTL_SECONDS}' response['X-Remote-Cache'] = 'HIT' if payload['Hit'] else ('CHANGED' if payload['Changed'] else 'FRESH') return response