From 7ed5335a75259ae22fa4b9e4e2893b3b9b92c15d Mon Sep 17 00:00:00 2001 From: Amos Jeffries Date: Sat, 20 Oct 2012 02:01:32 -0600 Subject: [PATCH] Remove the refresh_pattern ignore-no-cache option With the HTTP/1.1 Cache-Control:no-cache compliance upgrade this option became obsolete. Its main use-case was to force caching of responses which contained this control. Revalidation is now happening and no-cache objects are cached by default. The one remaining effect of ignoring no-cache is to prevent no-cache from allowing authenticated responses being cached. Which is the opposite of its usually expected result and allowing that change of behaviour would be counter productive. --- src/RefreshPattern.h | 1 - src/cache_cf.cc | 20 ++------------------ src/cf.data.pre | 7 ------- src/http.cc | 2 +- 4 files changed, 3 insertions(+), 27 deletions(-) diff --git a/src/RefreshPattern.h b/src/RefreshPattern.h index cac2486478..b0c7b04bc9 100644 --- a/src/RefreshPattern.h +++ b/src/RefreshPattern.h @@ -49,7 +49,6 @@ public: unsigned int override_lastmod:1; unsigned int reload_into_ims:1; unsigned int ignore_reload:1; - unsigned int ignore_no_cache:1; unsigned int ignore_no_store:1; unsigned int ignore_must_revalidate:1; unsigned int ignore_private:1; diff --git a/src/cache_cf.cc b/src/cache_cf.cc index c92025c6da..c1807b61e2 100644 --- a/src/cache_cf.cc +++ b/src/cache_cf.cc @@ -808,15 +808,6 @@ configDoConfigure(void) break; } - for (R = Config.Refresh; R; R = R->next) { - if (!R->flags.ignore_no_cache) - continue; - - debugs(22, DBG_IMPORTANT, "WARNING: use of 'ignore-no-cache' in 'refresh_pattern' violates HTTP"); - - break; - } - for (R = Config.Refresh; R; R = R->next) { if (!R->flags.ignore_no_store) continue; @@ -2682,9 +2673,6 @@ dump_refreshpattern(StoreEntry * entry, const char *name, RefreshPattern * head) if (head->flags.ignore_reload) storeAppendPrintf(entry, " ignore-reload"); - if (head->flags.ignore_no_cache) - storeAppendPrintf(entry, " ignore-no-cache"); - if (head->flags.ignore_no_store) storeAppendPrintf(entry, " ignore-no-store"); @@ -2723,7 +2711,6 @@ parse_refreshpattern(RefreshPattern ** head) int override_lastmod = 0; int reload_into_ims = 0; int ignore_reload = 0; - int ignore_no_cache = 0; int ignore_no_store = 0; int ignore_must_revalidate = 0; int ignore_private = 0; @@ -2802,8 +2789,6 @@ parse_refreshpattern(RefreshPattern ** head) override_expire = 1; else if (!strcmp(token, "override-lastmod")) override_lastmod = 1; - else if (!strcmp(token, "ignore-no-cache")) - ignore_no_cache = 1; else if (!strcmp(token, "ignore-no-store")) ignore_no_store = 1; else if (!strcmp(token, "ignore-must-revalidate")) @@ -2822,6 +2807,8 @@ parse_refreshpattern(RefreshPattern ** head) /* tell client_side.c that this is used */ #endif + } else if (!strcmp(token, "ignore-no-cache")) { + debugs(22, DBG_PARSE_NOTE(2), "UPGRADE: refresh_pattern option 'ignore-no-cache' is obsolete. Remove it."); } else debugs(22, DBG_CRITICAL, "refreshAddToList: Unknown option '" << pattern << "': " << token); } @@ -2868,9 +2855,6 @@ parse_refreshpattern(RefreshPattern ** head) if (ignore_reload) t->flags.ignore_reload = 1; - if (ignore_no_cache) - t->flags.ignore_no_cache = 1; - if (ignore_no_store) t->flags.ignore_no_store = 1; diff --git a/src/cf.data.pre b/src/cf.data.pre index c2f154bea9..cd1119ed6b 100644 --- a/src/cf.data.pre +++ b/src/cf.data.pre @@ -4228,7 +4228,6 @@ DOC_START override-lastmod reload-into-ims ignore-reload - ignore-no-cache ignore-no-store ignore-must-revalidate ignore-private @@ -4261,12 +4260,6 @@ DOC_START this feature could make you liable for problems which it causes. - ignore-no-cache ignores any ``Pragma: no-cache'' and - ``Cache-control: no-cache'' headers received from a server. - The HTTP RFC never allows the use of this (Pragma) header - from a server, only a client, though plenty of servers - send it anyway. - ignore-no-store ignores any ``Cache-control: no-store'' headers received from a server. Doing this VIOLATES the HTTP standard. Enabling this feature could make you diff --git a/src/http.cc b/src/http.cc index 9bcc199563..e50a962a48 100644 --- a/src/http.cc +++ b/src/http.cc @@ -422,7 +422,7 @@ HttpStateData::cacheableReply() #if 0 // waiting on HTTPbis WG agreement before we do this // NP: given the must-revalidate exception we should also be able to exempt no-cache. - } else if (rep->cache_control->noCache() && !REFRESH_OVERRIDE(ignore_no_cache)) { + } else if (rep->cache_control->noCache()) { debugs(22, 3, HERE << "Authenticated but server reply Cache-Control:no-cache"); mayStore = true; #endif -- 2.47.2