From 75bebafd503bbdf7761a15299e3640b982869a1e Mon Sep 17 00:00:00 2001 From: Amos Jeffries Date: Sat, 20 Oct 2012 06:32:21 -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/cache_cf.cc | 20 ++------------------ src/cf.data.pre | 7 ------- src/http.cc | 2 +- src/structs.h | 1 - 4 files changed, 3 insertions(+), 27 deletions(-) diff --git a/src/cache_cf.cc b/src/cache_cf.cc index cdb45ca56e..75b9a80ee6 100644 --- a/src/cache_cf.cc +++ b/src/cache_cf.cc @@ -753,15 +753,6 @@ configDoConfigure(void) break; } - for (R = Config.Refresh; R; R = R->next) { - if (!R->flags.ignore_no_cache) - continue; - - debugs(22, 1, "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; @@ -2640,9 +2631,6 @@ dump_refreshpattern(StoreEntry * entry, const char *name, refresh_t * 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"); @@ -2681,7 +2669,6 @@ parse_refreshpattern(refresh_t ** 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; @@ -2760,8 +2747,6 @@ parse_refreshpattern(refresh_t ** 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")) @@ -2780,6 +2765,8 @@ parse_refreshpattern(refresh_t ** 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, 0, "refreshAddToList: Unknown option '" << pattern << "': " << token); } @@ -2826,9 +2813,6 @@ parse_refreshpattern(refresh_t ** 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 540aecdc78..5487a97068 100644 --- a/src/cf.data.pre +++ b/src/cf.data.pre @@ -3943,7 +3943,6 @@ DOC_START override-lastmod reload-into-ims ignore-reload - ignore-no-cache ignore-no-store ignore-must-revalidate ignore-private @@ -3976,12 +3975,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 de09782e08..3bcd73ce01 100644 --- a/src/http.cc +++ b/src/http.cc @@ -408,7 +408,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 diff --git a/src/structs.h b/src/structs.h index 85b5da201b..3594015e1e 100644 --- a/src/structs.h +++ b/src/structs.h @@ -1053,7 +1053,6 @@ struct _refresh_t { 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; -- 2.47.2