Спасибо Ð·Ð° ÑÑ‚атью!!!<br><br><div class="gmail_quote">16 Ð¾ÐºÑ‚ября 2009 Ð³. 8:29 Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ель Igor Sysoev <span dir="ltr">&lt;<a href="mailto:is@rambler-co.ru">is@rambler-co.ru</a>&gt;</span> Ð½Ð°Ð¿Ð¸ÑÐ°Ð»:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im">On Fri, Oct 16, 2009 at 03:41:23AM +0400, Dmitry Koterov wrote:<br>
<br>
&gt; Ð¯ Ñ‚ут ÑÑ‚атью Ñ‡ÐµÑ€ÐºÐ°Ð½ÑƒÐ»: <a href="http://dklab.ru/chicken/nablas/56.html" target="_blank">http://dklab.ru/chicken/nablas/56.html</a><br>
&gt; Ð•сли ÐµÑÑ‚ÑŒ Ð¼Ñ‹ÑÐ»Ð¸/замечания/комментарии/уточнения, Ð±ÑƒÐ´Ñƒ Ñ€Ð°Ð´ Ð²Ð½ÐµÑÑ‚и Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ.<br>
<br>
</div><div class="im">&gt; fastcgi_cache_valid: ÐºÑÑˆÐ¸Ñ€ÑƒÐµÐ¼ ÐºÐ¾Ð´ Ð¾Ñ‚вета 304 Ñ‚оже<br>
&gt;<br>
&gt; fastcgi_cache_valid 200 301 302 304 5m;<br>
&gt;<br>
</div>&gt; Ð’ Ð´Ð¸Ñ€ÐµÐºÑ‚иве fastcgi_cache_valid&lt;<a href="http://sysoev.ru/nginx/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache_valid" target="_blank">http://sysoev.ru/nginx/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache_valid</a>&gt;мы<br>

<div class="im">&gt; Ð·Ð°ÑÑ‚авляем ÐºÑÑˆÐ¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð½Ðµ Ñ‚олько ÑÑ‚андартные ÐºÐ¾Ð´Ñ‹ 200 ÐžÐš, 301 Moved<br>
&gt; Permanently Ð¸ 302 Found, Ð½Ð¾ Ñ‚акже Ð¸ 304 Not Modified. ÐŸÐ¾Ñ‡ÐµÐ¼Ñƒ? Ð”авайте<br>
&gt; Ð²ÑÐ¿Ð¾Ð¼Ð½Ð¸Ð¼, Ñ‡Ñ‚о Ð¾Ð·Ð½Ð°Ñ‡Ð°ÐµÑ‚ 304. ÐžÐ½ Ð²Ñ‹Ð´Ð°ÐµÑ‚ся Ñ Ð¿ÑƒÑÑ‚ым Ñ‚елом Ð¾Ñ‚вета Ð² Ð´Ð²ÑƒÑ…<br>
&gt; ÑÐ»ÑƒÑ‡Ð°ÑÑ…:<br>
&gt;<br>
&gt; Â  Â - Ð•сли Ð±Ñ€Ð°ÑƒÐ·ÐµÑ€ Ð¿Ð¾ÑÐ»Ð°Ð» Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº &quot;If-Modified-Since: date&quot;, Ð² ÐºÐ¾Ñ‚ором date<br>
&gt; Â  Â Ð±Ð¾Ð»ÑŒÑˆÐµ Ð»Ð¸Ð±Ð¾ Ñ€Ð°Ð²Ð½Ð° Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸ÑŽ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° Ð¾Ñ‚вета &quot;Last-Modified: date&quot;. Ð¢.е.<br>
&gt; Â  Â ÐºÐ»Ð¸ÐµÐ½Ñ‚ ÑÐ¿Ñ€Ð°ÑˆÐ¸Ð²Ð°ÐµÑ‚: &quot;Есть Ð»Ð¸ Ð½Ð¾Ð²Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ñ Ð¼Ð¾Ð¼ÐµÐ½Ñ‚а date? Ð•сли Ð½ÐµÑ‚, Ð²ÐµÑ€Ð½Ð¸ Ð¼Ð½Ðµ<br>
&gt; Â  Â 304 Ð¸ ÑÑÐºÐ¾Ð½Ð¾Ð¼ÑŒ Ñ‚рафик. Ð•сли ÐµÑÑ‚ÑŒ, Ð¾Ñ‚дай Ð¼Ð½Ðµ Ñ‚ело ÑÑ‚раницы&quot;.<br>
&gt; Â  Â - Ð•сли Ð±Ñ€Ð°ÑƒÐ·ÐµÑ€ Ð¿Ð¾ÑÐ»Ð°Ð» Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº &quot;If-None-Match: hash&quot;, Ð³Ð´Ðµ hash ÑÐ¾Ð²Ð°Ð¿Ð´Ð°ÐµÑ‚<br>
&gt; Â  Â ÑÐ¾ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸ÐµÐ¼ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° Ð¾Ñ‚вета &quot;ETag: hash&quot;. Ð¢.е. ÐºÐ»Ð¸ÐµÐ½Ñ‚ ÑÐ¿Ñ€Ð°ÑˆÐ¸Ð²Ð°ÐµÑ‚:<br>
&gt; Â  Â &quot;Отличается Ð»Ð¸ Ñ‚екущая Ð²ÐµÑ€ÑÐ¸Ñ ÑÑ‚раницы Ð¾Ñ‚ Ñ‚ой, Ñ‡Ñ‚о Ñ Ð·Ð°Ð¿Ñ€Ð¾ÑÐ¸Ð» Ð² Ð¿Ñ€Ð¾ÑˆÐ»Ñ‹Ð¹ Ñ€Ð°Ð·?<br>
&gt; Â  Â Ð•сли Ð½ÐµÑ‚, Ð²ÐµÑ€Ð½Ð¸ Ð¼Ð½Ðµ 304 Ð¸ ÑÑÐºÐ¾Ð½Ð¾Ð¼ÑŒ Ñ‚рафик. Ð•сли Ð´Ð°, Ð¾Ñ‚дай Ñ‚ело ÑÑ‚раницы&quot;.<br>
&gt;<br>
&gt; Ð’ Ð¾Ð±Ð¾Ð¸Ñ… ÑÐ»ÑƒÑ‡Ð°ÑÑ… Last-Modified Ð¸Ð»Ð¸ ETag Ð±ÑƒÐ´ÑƒÑ‚ Ð²Ð·ÑÑ‚Ñ‹, ÑÐºÐ¾Ñ€ÐµÐµ Ð²ÑÐµÐ³Ð¾, Ð¸Ð· ÐºÑÑˆÐ°<br>
&gt; nginx, Ð¸ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ° Ð¿Ñ€Ð¾Ð¹Ð´ÐµÑ‚ Ð¾Ñ‡ÐµÐ½ÑŒ Ð±Ñ‹ÑÑ‚ро. ÐÐ°Ð¼ Ð½ÐµÐ·Ð°Ñ‡ÐµÐ¼ &quot;дергать&quot; PHP Ñ‚олько Ð´Ð»Ñ<br>
&gt; Ñ‚ого, Ñ‡Ñ‚обы ÑÐºÑ€Ð¸Ð¿Ñ‚ Ð²Ñ‹Ð´Ð°Ð» ÑÑ‚и Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ¸, Ð¾ÑÐ¾Ð±ÐµÐ½Ð½Ð¾ Ð² ÑÐ²ÐµÑ‚е Ñ‚ого, Ñ‡Ñ‚о ÐºÐ»Ð¸ÐµÐ½Ñ‚ам,<br>
&gt; ÐºÐ¾Ñ‚орым ÑƒÐ¹Ð´ÐµÑ‚ Ð¾Ñ‚вет 200, Ð¾Ð½ Ð±ÑƒÐ´ÐµÑ‚ Ð¾Ñ‚дан Ð¸Ð· ÐºÑÑˆÐ°. fastcgi_cache_key:<br>
&gt; Ð²Ð½Ð¸Ð¼Ð°Ñ‚ельно Ñ€Ð°Ð±Ð¾Ñ‚аем Ñ Ð·Ð°Ð²Ð¸ÑÐ¸Ð¼Ð¾ÑÑ‚ями<br>
&gt;<br>
&gt; fastcgi_cache_key<br>
&gt; &quot;$request_method|$http_if_modified_since|$http_if_none_match|$host|$request_uri&quot;;<br>
&gt;<br>
&gt; ÐžÑÐ¾Ð±Ð¾Ð³Ð¾ Ð²Ð½Ð¸Ð¼Ð°Ð½Ð¸Ñ Ð·Ð°ÑÐ»ÑƒÐ¶Ð¸Ð²Ð°ÐµÑ‚ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Ð² Ð´Ð¸Ñ€ÐµÐºÑ‚иве<br>
</div>&gt; fastcgi_cache_key&lt;<a href="http://sysoev.ru/nginx/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache_key" target="_blank">http://sysoev.ru/nginx/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache_key</a>&gt;.<br>

<div class="im">&gt; Ð¯ Ð¿Ñ€Ð¸Ð²ÐµÐ» Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð¾Ðµ Ñ€Ð°Ð±Ð¾Ñ‡ÐµÐµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ ÑÑ‚ой Ð´Ð¸Ñ€ÐµÐºÑ‚ивы. Ð¨Ð°Ð³ Ð²Ð¿Ñ€Ð°Ð²Ð¾, ÑˆÐ°Ð³ Ð²Ð»ÐµÐ²Ð¾,<br>
&gt; Ð¸ Ð²Ñ‹ Ð½Ð°Ñ‡Ð½ÐµÑ‚е Ð² Ñ€ÑÐ´Ðµ ÑÐ»ÑƒÑ‡Ð°ÐµÐ² Ð¿Ð¾Ð»ÑƒÑ‡Ð°Ñ‚ÑŒ &quot;неправильные&quot; Ð´Ð°Ð½Ð½Ñ‹Ðµ Ð¸Ð· ÐºÑÑˆÐ°. Ð˜Ñ‚ак:<br>
&gt;<br>
&gt; Â  Â - Ð—ависимость Ð¾Ñ‚ $request_method Ð½Ð°Ð¼ Ð½ÑƒÐ¶Ð½Ð°, Ñ‚.к. HEAD-запросы Ð² Ð˜Ð½Ñ‚ернете<br>
&gt; Â  Â Ð´Ð¾Ð²Ð¾Ð»ÑŒÐ½Ð¾ Ñ‡Ð°ÑÑ‚Ñ‹. ÐžÑ‚вет Ð½Ð° HEAD-запрос Ð½Ð¸ÐºÐ¾Ð³Ð´Ð° Ð½Ðµ ÑÐ¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ñ‚ела. Ð•сли ÑƒÐ±Ñ€Ð°Ñ‚ÑŒ<br>
&gt; Â  Â Ð·Ð°Ð²Ð¸ÑÐ¸Ð¼Ð¾ÑÑ‚ÑŒ Ð¾Ñ‚ $request_method, Ñ‚о Ð¼Ð¾Ð¶ÐµÑ‚ Ñ‚ак ÑÐ¾Ð²Ð¿Ð°ÑÑ‚ÑŒ, Ñ‡Ñ‚о ÐºÑ‚о-то Ð´Ð¾ Ð²Ð°Ñ<br>
&gt; Â  Â Ð·Ð°Ð¿Ñ€Ð¾ÑÐ¸Ð» Ð³Ð»Ð°Ð²Ð½ÑƒÑŽ ÑÑ‚Ñ€Ð°Ð½Ð¸Ñ†Ñƒ HEAD-методом, Ð° Ð²Ð°Ð¼ Ð¿Ð¾Ñ‚ом Ð¿Ð¾ GET Ð¾Ñ‚дастся Ð¿ÑƒÑÑ‚ой<br>
&gt; Â  Â ÐºÐ¾Ð½Ñ‚ент.<br>
&gt; Â  Â - Ð—ависимость Ð¾Ñ‚ $http_if_modified_since Ð½ÑƒÐ¶Ð½Ð° Ð´Ð»Ñ Ñ‚ого, Ñ‡Ñ‚обы ÐºÑÑˆ Ñ<br>
&gt; Â  Â Ð¾Ñ‚ветом 304 Not Modified Ð½Ðµ Ð±Ñ‹Ð» ÑÐ»ÑƒÑ‡Ð°Ð¹Ð½Ð¾ Ð¾Ñ‚дан ÐºÐ»Ð¸ÐµÐ½Ñ‚у, Ð´ÐµÐ»Ð°ÑŽÑ‰ÐµÐ¼Ñƒ Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ð¹<br>
&gt; Â  Â GET-запрос. Ð˜Ð½Ð°Ñ‡Ðµ ÐºÐ»Ð¸ÐµÐ½Ñ‚ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¿Ð¾Ð»ÑƒÑ‡Ð¸Ñ‚ÑŒ Ð¿ÑƒÑÑ‚ой Ð¾Ñ‚вет Ð¸Ð· ÐºÑÑˆÐ°.<br>
&gt; Â  Â - Ð¢Ð¾ Ð¶Ðµ ÑÐ°Ð¼Ð¾Ðµ Ð¸ Ñ $http_if_none_match. ÐœÑ‹ Ð´Ð¾Ð»Ð¶Ð½Ñ‹ Ð±Ñ‹Ñ‚ÑŒ Ð·Ð°ÑÑ‚рахованы Ð¾Ñ‚<br>
&gt; Â  Â Ð²Ñ‹Ð´Ð°Ñ‡Ð¸ Ð¿ÑƒÑÑ‚ых ÑÑ‚раниц ÐºÐ»Ð¸ÐµÐ½Ñ‚ам!<br>
&gt; Â  Â - ÐÐ°ÐºÐ¾Ð½ÐµÑ†, Ð·Ð°Ð²Ð¸ÑÐ¸Ð¼Ð¾ÑÑ‚ÑŒ Ð¾Ñ‚ $host Ð¸ $request_uri Ð½Ðµ Ñ‚ребует ÐºÐ¾Ð¼Ð¼ÐµÐ½Ñ‚ариев.<br>
<br>
</div>Спасибо. ÐšÐ¾Ð¼Ð¼ÐµÐ½Ñ‚арий Ð¿Ð¾ Ð¿Ð¾Ð²Ð¾Ð´Ñƒ 304 Ð¸ HEAD:<br>
<br>
1) HEAD Ð´Ð¾Ð»Ð¶ÐµÐ½ Ð¾Ñ‚рабатываться Ð½Ð¾Ñ€Ð¼Ð°Ð»ÑŒÐ½Ð¾ Ð±ÐµÐ· Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ельных Ð½Ð°ÑÑ‚роек:<br>
 Â  fastcgi_cache_key Â &quot;...$request_method...&quot;, Ñ‚о ÐµÑÑ‚ÑŒ, Ñƒ Ð±ÑÐºÐµÐ½Ð´Ð° Ð²ÑÑ‘ Ñ€Ð°Ð²Ð½Ð¾<br>
 Â  Ð·Ð°Ð¿Ñ€Ð°ÑˆÐ¸Ð²Ð°ÐµÑ‚ся GET, Ð¿Ð¾Ð»Ð½Ñ‹Ð¹ Ð¾Ñ‚вет ÐºÑÑˆÐ¸Ñ€ÑƒÐµÑ‚ся Ð¸ Ð¾Ñ‚даётся Ñ‚олько Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº.<br>
<br>
2) 304, $http_if_modified_since, $http_if_none_match, etc.:<br>
 Â  Ð¡Ñ‚роки If-Modified-Since, If-Range, Range, etc. Ð²Ñ‹Ñ€ÐµÐ·Ð°ÑŽÑ‚ся Ð¸Ð· Ð·Ð°Ð¿Ñ€Ð¾ÑÐ°<br>
 Â  Ðº Ð±ÑÐºÐµÐ½Ð´Ñƒ, Ð¿Ð¾ÑÑ‚ому Ð²ÑÐµÐ³Ð´Ð° ÐºÑÑˆÐ¸Ñ€ÑƒÐµÑ‚ся Ð¿Ð¾Ð»Ð½Ñ‹Ð¹ Ð¾Ñ‚вет. ÐšÐ»Ð¸ÐµÐ½Ñ‚у Ð¶Ðµ<br>
 Â  Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‰ÐµÑ‚ся Ñ‚о, Ñ‡Ñ‚о Ð¾Ð½ Ð¿Ð¾Ð¿Ñ€Ð¾ÑÐ¸Ð».<br>
<font color="#888888"><br>
<br>
--<br>
Игорь Ð¡Ñ‹ÑÐ¾ÐµÐ²<br>
<a href="http://sysoev.ru" target="_blank">http://sysoev.ru</a><br>
<br>
</font></blockquote></div><br>