From 62b4539a7fa37447690284a837663792eb91e745 Mon Sep 17 00:00:00 2001 From: rogerdz Date: Wed, 5 Mar 2025 04:18:03 +0000 Subject: [PATCH 1/2] fix duplicate cache for same param with varnish --- app/code/Magento/PageCache/etc/varnish4.vcl | 3 +++ app/code/Magento/PageCache/etc/varnish5.vcl | 3 +++ app/code/Magento/PageCache/etc/varnish6.vcl | 3 +++ app/code/Magento/PageCache/etc/varnish7.vcl | 3 +++ 4 files changed, 12 insertions(+) diff --git a/app/code/Magento/PageCache/etc/varnish4.vcl b/app/code/Magento/PageCache/etc/varnish4.vcl index c8aa542906c9b..08e435f24534f 100644 --- a/app/code/Magento/PageCache/etc/varnish4.vcl +++ b/app/code/Magento/PageCache/etc/varnish4.vcl @@ -22,6 +22,9 @@ acl purge { } sub vcl_recv { + # Sorting query string parameters + set req.url = std.querysort(req.url); + if (req.method == "PURGE") { if (client.ip !~ purge) { return (synth(405, "Method not allowed")); diff --git a/app/code/Magento/PageCache/etc/varnish5.vcl b/app/code/Magento/PageCache/etc/varnish5.vcl index 9bf8268fa8713..f7ba81d09a370 100644 --- a/app/code/Magento/PageCache/etc/varnish5.vcl +++ b/app/code/Magento/PageCache/etc/varnish5.vcl @@ -23,6 +23,9 @@ acl purge { } sub vcl_recv { + # Sorting query string parameters + set req.url = std.querysort(req.url); + if (req.method == "PURGE") { if (client.ip !~ purge) { return (synth(405, "Method not allowed")); diff --git a/app/code/Magento/PageCache/etc/varnish6.vcl b/app/code/Magento/PageCache/etc/varnish6.vcl index 7fa58b4809f8b..ff3d0368fb002 100644 --- a/app/code/Magento/PageCache/etc/varnish6.vcl +++ b/app/code/Magento/PageCache/etc/varnish6.vcl @@ -27,6 +27,9 @@ sub vcl_recv { set req.hash_always_miss = true; } + # Sorting query string parameters + set req.url = std.querysort(req.url); + if (req.method == "PURGE") { if (client.ip !~ purge) { return (synth(405, "Method not allowed")); diff --git a/app/code/Magento/PageCache/etc/varnish7.vcl b/app/code/Magento/PageCache/etc/varnish7.vcl index 3ac5990af8067..b6ab36b88f9f4 100644 --- a/app/code/Magento/PageCache/etc/varnish7.vcl +++ b/app/code/Magento/PageCache/etc/varnish7.vcl @@ -27,6 +27,9 @@ sub vcl_recv { set req.hash_always_miss = true; } + # Sorting query string parameters + set req.url = std.querysort(req.url); + if (req.method == "PURGE") { if (client.ip !~ purge) { return (synth(405, "Method not allowed")); From 2c02ec9044dc0fb16cdeb7e88afdd3a6f38c7dd9 Mon Sep 17 00:00:00 2001 From: Roger Date: Mon, 26 May 2025 02:06:45 +0000 Subject: [PATCH 2/2] update code --- app/code/Magento/PageCache/etc/varnish4.vcl | 4 +++- app/code/Magento/PageCache/etc/varnish5.vcl | 4 +++- app/code/Magento/PageCache/etc/varnish6.vcl | 4 +++- app/code/Magento/PageCache/etc/varnish7.vcl | 4 +++- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/app/code/Magento/PageCache/etc/varnish4.vcl b/app/code/Magento/PageCache/etc/varnish4.vcl index 08e435f24534f..08f95e98005cb 100644 --- a/app/code/Magento/PageCache/etc/varnish4.vcl +++ b/app/code/Magento/PageCache/etc/varnish4.vcl @@ -23,7 +23,9 @@ acl purge { sub vcl_recv { # Sorting query string parameters - set req.url = std.querysort(req.url); + if (req.url ~ "\?.+&.+") { + set req.url = std.querysort(req.url); + } if (req.method == "PURGE") { if (client.ip !~ purge) { diff --git a/app/code/Magento/PageCache/etc/varnish5.vcl b/app/code/Magento/PageCache/etc/varnish5.vcl index f7ba81d09a370..a468d6e300333 100644 --- a/app/code/Magento/PageCache/etc/varnish5.vcl +++ b/app/code/Magento/PageCache/etc/varnish5.vcl @@ -24,7 +24,9 @@ acl purge { sub vcl_recv { # Sorting query string parameters - set req.url = std.querysort(req.url); + if (req.url ~ "\?.+&.+") { + set req.url = std.querysort(req.url); + } if (req.method == "PURGE") { if (client.ip !~ purge) { diff --git a/app/code/Magento/PageCache/etc/varnish6.vcl b/app/code/Magento/PageCache/etc/varnish6.vcl index ff3d0368fb002..412983a5448df 100644 --- a/app/code/Magento/PageCache/etc/varnish6.vcl +++ b/app/code/Magento/PageCache/etc/varnish6.vcl @@ -28,7 +28,9 @@ sub vcl_recv { } # Sorting query string parameters - set req.url = std.querysort(req.url); + if (req.url ~ "\?.+&.+") { + set req.url = std.querysort(req.url); + } if (req.method == "PURGE") { if (client.ip !~ purge) { diff --git a/app/code/Magento/PageCache/etc/varnish7.vcl b/app/code/Magento/PageCache/etc/varnish7.vcl index b6ab36b88f9f4..5a7e37f0472a1 100644 --- a/app/code/Magento/PageCache/etc/varnish7.vcl +++ b/app/code/Magento/PageCache/etc/varnish7.vcl @@ -28,7 +28,9 @@ sub vcl_recv { } # Sorting query string parameters - set req.url = std.querysort(req.url); + if (req.url ~ "\?.+&.+") { + set req.url = std.querysort(req.url); + } if (req.method == "PURGE") { if (client.ip !~ purge) {