使用清漆删除基于查询参数的 header
Remove a header based on query param with varnish
我想从 URL 的 中删除 cache-control header具体 查询参数 。例如当存在查询参数 ajax=1
时。
例如
www.domain.com?p=3&scroll=1&ajax=1&scroll=1
这些 被 chrome 浏览器 缓存的时间比我希望的要长,我想在这种特定情况下停止它。我已经尝试过 .htaccess
,它适用于静态文件,但对上面提到的 URL 不起作用。
RewriteEngine on
RewriteCond %{QUERY_STRING} (^|&)ajax=1(&|$)
Header unset "Cache-Control"
我可以在下一个网站版本中使用缓存破坏器,但在生产中很困难,担心它会在用户浏览器中不必要地缓存大量文件,所以宁愿实现服务器端。
我的服务器有 Cloudflare 然后 NGINX 终止 SSL 到 Varnish 然后 Apache 上面有一个 Magento 2 实例 运行。所以我想我可以通过 NGINX 或 Varnish 配置,甚至是 Cloudflare 来实现这一点。然而,我似乎无法在 Cloudflare 中找到使用页面规则实现此目的的方法,或者找不到 Varnish 或 Nginx 的示例。
我假设当 ajax=1
是您的 URL 参数的一部分时您不想缓存?
您可以使用以下 VCL 片段在 Varnish 中执行此操作:
sub vcl_backend_response {
if(bereq.url ~ "\?([^&]*&)*ajax=1(&[^&]*)*$") {
set beresp.http.cache-control = "private, no-cache, no-store";
set beresp.uncacheable = true;
}
}
此代码段将确保 Varnish 不会缓存 URL 包含 ajax=1
URL 参数的响应。它还将确保位于前面的任何缓存代理不会缓存,因为 Cache-Control: private, no-cache, no-store
.
这是您要找的吗?
我想从 URL 的 中删除 cache-control header具体 查询参数 。例如当存在查询参数 ajax=1
时。
例如
www.domain.com?p=3&scroll=1&ajax=1&scroll=1
这些 被 chrome 浏览器 缓存的时间比我希望的要长,我想在这种特定情况下停止它。我已经尝试过 .htaccess
,它适用于静态文件,但对上面提到的 URL 不起作用。
RewriteEngine on
RewriteCond %{QUERY_STRING} (^|&)ajax=1(&|$)
Header unset "Cache-Control"
我可以在下一个网站版本中使用缓存破坏器,但在生产中很困难,担心它会在用户浏览器中不必要地缓存大量文件,所以宁愿实现服务器端。
我的服务器有 Cloudflare 然后 NGINX 终止 SSL 到 Varnish 然后 Apache 上面有一个 Magento 2 实例 运行。所以我想我可以通过 NGINX 或 Varnish 配置,甚至是 Cloudflare 来实现这一点。然而,我似乎无法在 Cloudflare 中找到使用页面规则实现此目的的方法,或者找不到 Varnish 或 Nginx 的示例。
我假设当 ajax=1
是您的 URL 参数的一部分时您不想缓存?
您可以使用以下 VCL 片段在 Varnish 中执行此操作:
sub vcl_backend_response {
if(bereq.url ~ "\?([^&]*&)*ajax=1(&[^&]*)*$") {
set beresp.http.cache-control = "private, no-cache, no-store";
set beresp.uncacheable = true;
}
}
此代码段将确保 Varnish 不会缓存 URL 包含 ajax=1
URL 参数的响应。它还将确保位于前面的任何缓存代理不会缓存,因为 Cache-Control: private, no-cache, no-store
.
这是您要找的吗?