HTMx 有一个常见的模式,根据
hx-..
请求标头返回不同的响应,建议添加相应的 Vary
响应标头:
请注意,如果您的服务器可以根据某些其他标头为同一 URL 呈现不同的内容,则需要使用 Vary 响应 HTTP 标头。例如,如果您的服务器在 HX-Request 标头丢失或为 false 时呈现完整的 HTML,并且在 HX-Request: true 时呈现该 HTML 的片段,则您需要添加 Vary: HX-Request。 https://htmx.org/docs/#caching
这似乎是中间件的一个很好的用例,例如:
给定 URL 的所有响应都应使用相同的 Vary 标头值,包括 304 Not Modified 响应和“默认”响应。 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Vary
所以我的问题是:
Vary: hx-request, hx-target, hx-trigger, hx-trigger-name
标头有什么缺点吗?GET
和HEAD
以外的请求方法?这取决于您的缓存策略,但我认为最好完全避免中间件并根据具体情况处理缓存。
原因是,稍后您可能会得到各种不同的标头组合(不仅仅是 htmx 标头组合),因此在每个请求上都可用它可能是一种矫枉过正,并导致一堆被覆盖的逻辑。
至于第二个问题 - 否。推荐的方法是仅在数据获取时应用缓存。