>я пытаюсь использовать =) Ну хоть один нашелся!
>тоже заткнулся на этом параметре must-revalidate
Этот параметр в данном случае не при чем.
На сколько я разобрался в вопросе(и уже нашел решение) на данный момент имеется два
вида неправильных сайтов/страниц которые никакими ухищрениями с конфигами
не устраняться:
1. Сайты выдающие HTTP команду
"Cache-Control: no-store"
пример страницы приведен выше
(там кстати выдается команда "Cache-Control: no-cache, must-revalidate, no-store").
2. Сайты выдающие HTTP команду
"Expires: -1"
пример "http://www.microsoft.com/technet/technetmag/issues/2007/03/H...
По случаю 1. имеет место обычная ошибка: параметр squid-а "ignore-no-cache"
не действует на "Cache-Control: no-store" т.к. в исходниках (http.c)
для "Cache-Control: no-store" в строке:
if (EBIT_TEST(cc_mask, CC_NO_STORE))
пропущена часть которая присутствует в строке выше для "Cache-Control: no-cache":
if (EBIT_TEST(cc_mask, CC_NO_CACHE) && !REFRESH_OVERRIDE(ignore_no_cache))
т.е. для "Cache-Control: no-store" строка должна выглядеть так:
if (EBIT_TEST(cc_mask, CC_NO_STORE) && !REFRESH_OVERRIDE(ignore_no_cache))
Патч для данного случая описан в предидущем моем посте.
По случаю 2. Здесь сложнее (в смысле надо править несколько строк все того же http.c)
по-этому привожу полный патч для случая 1 и 2:
diff -Nur squid-2.6.STABLE16/src/http.c squid-2.6.STABLE16-P1/src/http.c
--- squid-2.6.STABLE16/src/http.c Sun Jul 22 00:05:55 2007
+++ squid-2.6.STABLE16-P1/src/http.c Tue Sep 18 19:18:20 2007
@@ -241,7 +241,9 @@
return 0;
if (EBIT_TEST(cc_mask, CC_NO_CACHE) && !REFRESH_OVERRIDE(ignore_no_cache))
return 0;
- if (EBIT_TEST(cc_mask, CC_NO_STORE))
+ /* --== My Edit 18.09.07
+ if (EBIT_TEST(cc_mask, CC_NO_STORE)) */
+ if (EBIT_TEST(cc_mask, CC_NO_STORE) && !REFRESH_OVERRIDE(ignore_no_cache))
return 0;
if (httpState->request->flags.auth_sent) {
/*
@@ -266,6 +268,8 @@
* continuous push replies. These are generally dynamic and
* probably should not be cachable
*/
+ /*--==My_Add==--*/
+ if ( !REFRESH_OVERRIDE(ignore_no_cache) )
if ((v = httpHeaderGetStr(hdr, HDR_CONTENT_TYPE)))
if (!strncasecmp(v, "multipart/x-mixed-replace", 25))
return 0;
@@ -280,10 +284,14 @@
* Don't cache objects that need to be refreshed on next request,
* unless we know how to refresh it.
*/
+ /*--==My_Add==--*/
+ if ( REFRESH_OVERRIDE(ignore_no_cache) )
+ return 1; /*--==My_Add==--*/
if (!refreshIsCachable(httpState->entry))
return 0;
/* don't cache objects from peers w/o LMT, Date, or Expires */
/* check that is it enough to check headers @?@ */
+ if ( !REFRESH_OVERRIDE(ignore_no_cache) )
if (rep->date > -1)
return 1;
else if (rep->last_modified > -1)
Компилировать надо обязательно с включенной опцией
--enable-http-violations
вот и все. Все работает. На данный момент у меня все страницы кэшируються.