[squid-users] Vary object loop returns

joe chip_pop at hotmail.com
Sun Jun 5 16:21:16 UTC 2016


Quotation marks  at the end fixed

--- src/client_side.cc	2016-05-25 02:27:13.000000000 +0300
+++ src/client_side.cc	2016-06-05 18:57:50.000000000 +0300
@@ -140,7 +140,7 @@
 #if LINGERING_CLOSE
 #define comm_close comm_lingering_close
 #endif
-
+#include <regex>
 /// dials clientListenerConnectionOpened call
 class ListeningStartedDialer: public CallDialer, public
Ipc::StartListeningCb
 {
@@ -4738,6 +4738,22 @@
             if (!vary.isEmpty())
                 request->vary_headers = vary;
         }
+        /* new test in vary header there is unwanted mark deed code wish is
marked with %20 tell the browser not to use */
+        /* and its affecting the cache for cache hit %   if you use 2
browser example Firefox and chrome and load object */
+        /* that has vary --> accept-encoding="gzip,%20deflate,%20sdch */
+        /* second browser use the same object link and has different
accept-encoding="gzip,%20deflate" */
+        /* as you notice they do not match so result miss and it delete the
previous object from the cache */
+        /* the new code should filter out those marked with %20 the
different is really big in % hit */ 
+        if (!vary.isEmpty()) {
+            std::regex e ("\\b(,%20)(.*)([,\"]$)");  
+            std::string str1 = std::regex_replace (vary.c_str(),e,"")+"\"";
+            if (str1.find("\"\"") != std::string::npos) {
+               str1.erase(str1.begin() + str1.size() - 1);
+            } else {
+            vary=SBuf(str1);
+            }
+             return VARY_MATCH;
+        }
 
         if (vary.isEmpty()) {
             /* Ouch.. we cannot handle this kind of variance */




--
View this message in context: http://squid-web-proxy-cache.1019090.n4.nabble.com/Vary-object-loop-returns-tp4677716p4677817.html
Sent from the Squid - Users mailing list archive at Nabble.com.


More information about the squid-users mailing list