[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