<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=UTF-8" http-equiv="Content-Type">
  <title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
Alex Vorona wrote:
<blockquote cite="mid:4989D0D4.3040100@amhost.net" type="cite">04.02.2009
18:09, Роман Маширов wrote:
  <br>
  <blockquote type="cite">Временно решил проблему прописав add_header
Last-Modified 'Thu, 22 Jan 2009 10:49:49 GMT';
    <br>
сорри за настойчивость, но способа отключить проверку if-modified-since
для location таки нету?
    <br>
    <br>
Роман Маширов wrote:
    <br>
    <blockquote type="cite">Добрый день!
      <br>
      <br>
Вопрос в большей степени теоретический, но все же. Можно ли запретить
проверку if-modified-since для location?
      <br>
Есть location, при запросе на него выдается x-accel-redirect на
случайный файл на диске. Если броузер отправляет If-Modified-Since
nginx проверяет дату модификации файла на который выдали
x-accel-redirect. Теоретически никто не запрещает файлам на диске иметь
одинаковое время модификации. В итоге будет выдан 304 not modified,
хотя файл не тот, который выдавали в прошлый раз.
      <br>
      <br>
-- <br>
MRJ
      <br>
      <br>
    </blockquote>
  </blockquote>
а хочется отдавать 200 каждый раз при любом запросе?
  <br>
  <br>
</blockquote>
Да. Что происходит в примерах:<br>
<br>
expires -1;<br>
<br>
первый запрос (кэш бровзера пустой):<br>
GET /ibb/1444_289 HTTP/1.1
<br>
Host: test.client2.nandy.ru:8080
<br>
User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.1.12)
Gecko/20080213 Firefox/2.0.0.12
<br>
Accept:
text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5

<br>
Accept-Language: ru,en-us;q=0.7,en;q=0.3
<br>
Accept-Encoding: gzip,deflate
<br>
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
<br>
Keep-Alive: 300
<br>
Connection: keep-alive
<br>
 <br>
HTTP/1.x 200 OK
<br>
Server: nginx/0.6.31
<br>
Date: Wed, 04 Feb 2009 18:24:43 GMT
<br>
Content-Type: text/html; charset=utf-8
<br>
Content-Length: 529
<br>
<b>Last-Modified: Wed, 04 Feb 2009 18:03:22 GMT</b>
<br>
Connection: keep-alive
<br>
<b>Expires: Wed, 04 Feb 2009 18:24:42 GMT
<br>
Cache-Control: no-cache
<br>
</b>Accept-Ranges: bytes<br>
<br>
повторный запрос:<br>
GET /ibb/1444_289 HTTP/1.1
<br>
Host: test.client2.nandy.ru:8080
<br>
User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.1.12)
Gecko/20080213 Firefox/2.0.0.12
<br>
Accept:
text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5

<br>
Accept-Language: ru,en-us;q=0.7,en;q=0.3
<br>
Accept-Encoding: gzip,deflate
<br>
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
<br>
Keep-Alive: 300
<br>
Connection: keep-alive
<br>
<b>If-Modified-Since: Wed, 04 Feb 2009 18:03:22 GMT</b>
<br>
 <br>
<b>HTTP/1.x 304 Not Modified</b>
<br>
Server: nginx/0.6.31
<br>
Date: Wed, 04 Feb 2009 18:26:36 GMT
<br>
Last-Modified: Wed, 04 Feb 2009 18:03:22 GMT
<br>
Connection: keep-alive
<br>
Expires: Wed, 04 Feb 2009 18:26:35 GMT
<br>
Cache-Control: no-cache
<br>
<br>
При этом x-accel-redirect был отдан на другой файл, просто у этого
файла ровно такое же время модификации.<br>
<br>
<br>
expires 0;<br>
<br>
первый запрос (кэш очищен):<br>
GET /ibb/1444_289 HTTP/1.1
<br>
Host: test.client2.nandy.ru:8080
<br>
User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.1.12)
Gecko/20080213 Firefox/2.0.0.12
<br>
Accept:
text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5

<br>
Accept-Language: ru,en-us;q=0.7,en;q=0.3
<br>
Accept-Encoding: gzip,deflate
<br>
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
<br>
Keep-Alive: 300
<br>
Connection: keep-alive
<br>
 <br>
HTTP/1.x 200 OK
<br>
Server: nginx/0.6.31
<br>
Date: Wed, 04 Feb 2009 18:30:50 GMT
<br>
Content-Type: text/html; charset=utf-8
<br>
Content-Length: 529
<br>
<b>Last-Modified: Wed, 04 Feb 2009 18:03:22 GMT</b>
<br>
Connection: keep-alive
<br>
<b>Expires: Wed, 04 Feb 2009 18:30:50 GMT
<br>
Cache-Control: max-age=0</b>
<br>
Accept-Ranges: bytes
<br>
<br>
Повторный запрос:<br>
GET /ibb/1444_289 HTTP/1.1
<br>
Host: test.client2.nandy.ru:8080
<br>
User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.1.12)
Gecko/20080213 Firefox/2.0.0.12
<br>
Accept:
text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5

<br>
Accept-Language: ru,en-us;q=0.7,en;q=0.3
<br>
Accept-Encoding: gzip,deflate
<br>
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
<br>
Keep-Alive: 300
<br>
Connection: keep-alive
<br>
<b>If-Modified-Since: Wed, 04 Feb 2009 18:03:22 GMT</b>
<br>
 <br>
<b>HTTP/1.x 304 Not Modified</b>
<br>
Server: nginx/0.6.31
<br>
Date: Wed, 04 Feb 2009 18:32:52 GMT
<br>
Last-Modified: Wed, 04 Feb 2009 18:03:22 GMT
<br>
Connection: keep-alive
<br>
Expires: Wed, 04 Feb 2009 18:32:52 GMT
<br>
Cache-Control: max-age=0<br>
<br>
И опять-таки x-accel-redirect отдавался на разные файлы с одинаковым
временем одификации.<br>
<br>
Логика бровзера понятна: кешировать запрещено, но это не значит что не
следует переспросить сервер, а вдруг файл не изменился?<br>
<br>
Логика nginx тоже не вызывает сомнений если x-accel-redirect всегда
отображает один и тот же урл в один и тот же файл. Тогда проверка по
времени модификации файла дает правильный результат.<br>
<br>
Проблема возникает только если по одному урлу может быть выдан редирект
на разные файлы. <br>
<br>
Соответственно пока мое решение <br>
expires -1;<br>
add_header Last-Modified 'Thu, 22 Jan 2009 10:49:49 GMT';<br>
<br>
Первый запрос:<br>
GET /ibb/1444_289 HTTP/1.1
<br>
Host: test.client2.nandy.ru:8080
<br>
User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.1.12)
Gecko/20080213 Firefox/2.0.0.12
<br>
Accept:
text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5

<br>
Accept-Language: ru,en-us;q=0.7,en;q=0.3
<br>
Accept-Encoding: gzip,deflate
<br>
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
<br>
Keep-Alive: 300
<br>
Connection: keep-alive
<br>
 <br>
HTTP/1.x 200 OK
<br>
Server: nginx/0.6.31
<br>
Date: Wed, 04 Feb 2009 18:40:37 GMT
<br>
Content-Type: text/html; charset=utf-8
<br>
Content-Length: 529
<br>
Connection: keep-alive
<br>
Expires: Wed, 04 Feb 2009 18:40:36 GMT
<br>
Cache-Control: no-cache
<br>
<b>Last-Modified: Thu, 22 Jan 2009 10:49:49 GMT</b>
<br>
Accept-Ranges: bytes
<br>
<br>
Повторный запрос:<br>
GET /ibb/1444_289 HTTP/1.1
<br>
Host: test.client2.nandy.ru:8080
<br>
User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.1.12)
Gecko/20080213 Firefox/2.0.0.12
<br>
Accept:
text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5

<br>
Accept-Language: ru,en-us;q=0.7,en;q=0.3
<br>
Accept-Encoding: gzip,deflate
<br>
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
<br>
Keep-Alive: 300
<br>
Connection: keep-alive
<br>
<b>If-Modified-Since: Thu, 22 Jan 2009 10:49:49 GMT</b>
<br>
Cache-Control: max-age=0
<br>
 <br>
<b>HTTP/1.x 200 OK</b>
<br>
Server: nginx/0.6.31
<br>
Date: Wed, 04 Feb 2009 18:42:34 GMT
<br>
Content-Type: text/html; charset=utf-8
<br>
Content-Length: 529
<br>
Connection: keep-alive
<br>
Expires: Wed, 04 Feb 2009 18:42:33 GMT
<br>
Cache-Control: no-cache
<br>
<b>Last-Modified: Thu, 22 Jan 2009 10:49:49 GMT</b>
<br>
Accept-Ranges: bytes
<br>
<br>
Т.е. поставить last-modified в прошлое относительно даты модификации
файлов. Тогда броузер переспрашивает в if-modified это старое значение,
оно не совпадает со значением файла на диске и ура. <br>
Иеальным решением было бы отключить проверку if-modified-since...<br>
<br>
--<br>
MRJ<br>
</body>
</html>