<div dir="ltr">Здравствуйте Вадим,<div><br></div><div>да, должен.</div><div>В основном все кэшируется, кроме исключений.</div><div>Вот урезанная location секция из текущего nginx конфига:</div><div><br></div><div><div>location / {</div>
<div><span class="" style="white-space:pre"> </span>proxy_pass <a href="http://backend">http://backend</a>;</div><div><span class="" style="white-space:pre"> </span>proxy_cache cache;</div><div><span class="" style="white-space:pre"> </span>proxy_cache_valid 200 302 304 180m;</div>
<div><span class="" style="white-space:pre"> </span>proxy_cache_valid any 1s;</div><div><span class="" style="white-space:pre"> </span>proxy_cache_key "$request_method|$http_if_modified_since|$http_if_none_match|$host|$request_uri";</div>
<div><span class="" style="white-space:pre"> </span>proxy_hide_header "Set-Cookie";</div><div><span class="" style="white-space:pre"> </span>proxy_ignore_headers "Cache-Control" "Expires";</div>
<div><span class="" style="white-space:pre"> </span>add_header Cache-Control private;</div><div><span class="" style="white-space:pre"> </span>expires 180m;</div><div><span class="" style="white-space:pre"> </span>include /etc/nginx/proxy.conf;</div>
<div><span class="" style="white-space:pre"> </span>if ($request_uri = /index.php?main_page=accountbox) {</div><div><span class="" style="white-space:pre"> </span>return 412;</div><div><span class="" style="white-space:pre"> </span>}</div>
<div><span class="" style="white-space:pre"> </span># еще штук 20 подобных ($request_uri = /index.php?...) отсылок на на бэкенд </div><div><br></div><div><span class="" style="white-space:pre"> </span>if ($arg_main_page = nocachedajax) {</div>
<div><span class="" style="white-space:pre"> </span>return 412;</div><div><span class="" style="white-space:pre"> </span>}</div><div><span class="" style="white-space:pre"> </span># еще штук 10 подобных ($arg_xxx = /yyy) отсылок на на бэкенд </div>
<div><br></div><div><span class="" style="white-space:pre"> </span>if ($request_method = POST ) {</div><div><span class="" style="white-space:pre"> </span>return 412;</div><div><span class="" style="white-space:pre"> </span>}</div>
<div><span class="" style="white-space:pre"> </span>error_page 412 = @fallback;</div><div><span class="" style="white-space:pre"> </span>error_page 413 = @longcache;</div><div>}</div><div><br></div><div><div>location @fallback {</div>
<div><span class="" style="white-space:pre"> </span>proxy_cache off;</div><div><span class="" style="white-space:pre"> </span>proxy_pass <a href="http://backend">http://backend</a>;</div><div><span class="" style="white-space:pre"> </span>include /etc/nginx/proxy.conf;</div>
<div><span class="" style="white-space:pre"> </span>expires off;</div><div>}</div></div><div><br></div><div style>то есть кэшируется все, за рядом исключений.</div><div style>Строка для создания ключа включает в себя не нормализованный $request_uri</div>
<div style>Еще раз повторю, что надо:</div><div style>есть ряд запросов, которые НЕ надо кэшировать для обычных пользователей и наоборот надо для роботов.</div><div style>Например: </div><div style>1) имя пользователя/статус shopping cart вверху страницы не надо кэшировать для пользователей и надо для роботов (пусть хоть пустой ответ им идет - им по барабану)</div>
<div style>2) запрос "/index.php?main_page=nocachedajax&q=savelocation" пишет в сессию урл последней странички и отдает пустую строку.</div><div style>для пользователя его НЕ надо кэшировать, а для роботов нужно(поскольку не нужно для них хранить последний урл в сессии).</div>
<div style><br></div><div dir="ltr"><div class="gmail_extra"><br><br><div class="gmail_quote">2013/1/14 Вадим Лазовский <span dir="ltr"><<a href="mailto:vadim.lazovskiy@gmail.com" target="_blank">vadim.lazovskiy@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr">Здравствуйте.<div><br></div><div><div style="font-family:arial,sans-serif;font-size:13px">
Должен ли кэшироваться ответ от index.php c другими аргументами? Если да, то по какому ключу?</div></div></div>
<div class="gmail_extra"><br><br><div class="gmail_quote">14 января 2013 г., 16:58 пользователь Sergey Croitor <span dir="ltr"><<a href="mailto:scroitor@gmail.com" target="_blank">scroitor@gmail.com</a>></span> написал:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div><div class="h5"><div dir="ltr"><div class="gmail_extra">
Прежде чем надеяться, я плотно мониторил логи в течение месяца где-то.</div><div class="gmail_extra">
В данном конкретном случае роботы не балуют и используют именно этот паттерн ничего не переставляя.</div>
<div class="gmail_extra">То есть, буде такая возможность для location, то оно решило бы проблему.</div><div class="gmail_extra">И по моему опыту, роботы если и переставляют/добавляют к урлу параметры, то только от кривого кода в html или комбинируя всякие чекбоксы и селект боксы.</div>
<div class="gmail_extra">Ну а если какой лихой робот и переставил бы, то и фиг с ним(в моем случае). </div><div class="gmail_extra">99% этих бесполезных запросов nginx бы отдал из кэша и одному из PHP и этим бы решил проблему.<br>
</div><div class="gmail_extra">Но видимо не судьба. </div><div class="gmail_extra">Насколько я понял, это решаемо только путем предварительного вычисления условий с помощью perl_set внутри общего location.</div>
<div class="gmail_extra">Пока отщелкиваю подобные запросы от ботов на бэкенде, как это не прискорбно.</div><div><div class="gmail_extra"><br><div class="gmail_quote">2013/1/14 Andrey Repin <span dir="ltr"><<a href="mailto:hell-for-yahoo@umail.ru" target="_blank">hell-for-yahoo@umail.ru</a>></span><br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div>SC> Пытаюсь организовать кэширование страниц с uri начинающегося со следующих<br>
SC> символов:<br>
SC> /index.php?main_page=nocachedajax&q=savelocation<br>
<br>
Боюсь вас разочаровать, но для URL'ов в таком виде многие роботы частенько<br>
переставляют параметры запроса, как им угодно, так что на выполнение условия<br>
"начинается с" я бы на вашем месте надеяться не стал.<br>
<br>
SC> Надо сделать это только для роботов<br>
<br>
SC> Поначалу была мысль сделать так:<br>
<br>
SC> location /index.php?main_page=nocachedajax&q=savelocation {</div></blockquote></div><br><br></div></div></div>
<br></div></div><div class="im">_______________________________________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a><br></div></blockquote></div><span class=""><font color="#888888"><br><br clear="all"><div>
<br></div>-- <br><div dir="ltr">Best Regards,<br>
<div>Vadim Lazovskiy</div></div>
</font></span></div>
<br>_______________________________________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org">nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a><br></blockquote></div><br></div></div></div></div>