| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Азат Разетдинов 17.10.2006 21:08 / 17.10.2006 21:10
Если верить PAFу, возиться с сабжем не стоит, т. к. браузер сам всё сделает. Тем не менее Яндекс советует (да и Google рекомендует) обрабатывать If-Modified-Since.@ifModified[jCode]
^if($response:[last-modified] is date){
$response:last-modified[^dtf:to822[$response:last-modified]]
}
^if(
$env:REQUEST_METHOD eq GET
&&
(!$response:status || $response:status == 200)
&&
($env:HTTP_IF_NONE_MATCH eq '*'
|| def $response:etag && $response:etag eq $env:HTTP_IF_NONE_MATCH
|| def $response:[last-modified]
&& $response:[last-modified] eq $env:HTTP_IF_MODIFIED_SINCE)
){
$response:status(304)
}{
$result[$jCode]
}Для корректной работы необходимо указать $response:last-modified и/или $response:etag в любом из методов @auto[]. Для last-modified лучше всего подходит $file.mdate или значение столбца timestamp в бд. В качестве etag может служить md5-отпечаток текста или тот же last-modified, заключённый в кавычки.@main[]
^ifModified{
...
}См. также: