|
|
|
|
|
для: Izcian
(03.02.2013 в 22:49)
| | Ну Rewrite, да, приводит к замедлению скорости обработки... У вас виртуальный хостинг, выделенный сервер?
PS Под новые вопросы лучше все-таки заводить новые темы. | |
|
|
|
|
|
|
|
для: cheops
(30.01.2012 в 15:29)
| | Просто здорово что наткнулся на Ваш диалог, спасибо за разъяснения. Но вот какое дело, после того как я запустил все это хозяйство с этими заголовками, время загрузки страниц очень серьезно увеличилось. Особенно CSS - файлов. Что делать, ума не приложу | |
|
|
|
|
|
|
|
для: cheops
(31.01.2012 в 11:50)
| |
<?php
//Ссодержимое массива $_SERVER
Array
(
[HTTP_HOST] => домен
[HTTP_X_FORWARDED_FOR] => IP адрес
[HTTP_X_SCHEME] => http
[HTTP_CONNECTION] => close
[HTTP_IF_MODIFIED_SINCE] => Sat, 29 Oct 1994 19:43:31 GMT
[PATH] => /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
[SERVER_SIGNATURE] => <address>Apache/2 домен Port 80</address>
[SERVER_SOFTWARE] => Apache/2
[SERVER_NAME] => домен
[SERVER_ADDR] => 127.0.0.1
[SERVER_PORT] => 80
[REMOTE_ADDR] => IP адрес
[DOCUMENT_ROOT] => /home/имя_пользователя/domains/домен.ru/public_html
[SERVER_ADMIN] => support@хххх.ru
[SCRIPT_FILENAME] => /home/имя_пользователя/domains/домен.ru/public_html/имя_скрипта.php
[REMOTE_PORT] => 50327
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.0
[REQUEST_METHOD] => GET
[QUERY_STRING] =>
[REQUEST_URI] => /имя_скрипта.php
[SCRIPT_NAME] => /имя_скрипта.php
[PHP_SELF] => /имя_скрипта.php
[REQUEST_TIME] => 1327932673
)
|
Зато теперь ясно, как создать любую переменную окружения, какая понадобится! | |
|
|
|
|
|
|
|
для: Sfinks
(30.01.2012 в 20:10)
| | Да, перепрятушки, есть в исходных кодах PHP такая переменная окружения, наряду с HTTP_COOKIE2 и HTTP_VIA :))) На Apache ориентировался, поленился в исходный код залезть. | |
|
|
|
|
|
|
|
для: Владимир55
(31.01.2012 в 00:52)
| | Просто не понятно, как "прочитав и изучив" можно прийти к умозаключению:
> 2. $_SERVER['HTTP_IF_MODIFIED_SINCE'] будет всегда пустой, поскольку.....
Чтоб понятней было, опишу как выловить на том же примере, но с цитатами:
Запрос:
http://site.info/154/5059/thumb.css
|
Редирект в .htaccess:
RewriteEngine On
RewriteRule ^(\d+)/(\d+)/thumb\.css$ thumb.css.php?c=$1&g=$2 [L]
|
Фрагмент кода отвечающий за кеширование:
<?
header("Content-type: text/css");
header("Last-Modified: ".date("r",$last_mod_stamp));
header("Cache-Control: private, max-age=2592000, pre-check=605000");
| Здесь $last_mod_stamp определяется в коде ранее, по дате модификации файла на который ссылается результирующий CSS. Вообще самая большая проблема с реализацией ответа 304 у вас будет заключаться именно в определении этой переменно. Мне, например, т.к. файл, дату модификации которого нужно узнать, находится удаленно, чтоб не дергать HTTP при каждом обращении, пришлось создать новую таблицу в БД и поменять много где еще код, чтоб информация в этой таблице была актуальна. И вообще для каждого блока сайта алгоритм определения этой переменной будет сложным и индивидуальным.
Далее, когда страница кеширована браузером и вы нажимаете "обновить" (ну или яндекс перезагружает уже загруженную ранее страницу), отправляется этот неуловимый заголовок. И вот фрагмент кода, отвечающий за отслеживание этого заголовка:
<?
if(isset($_SERVER["HTTP_IF_MODIFIED_SINCE"]))
if($since_stamp = strtotime($_SERVER["HTTP_IF_MODIFIED_SINCE"]))
if($since_stamp >= $last_mod_stamp){
header("HTTP/1.1 304 Not Modified");
exit;
}
| Располагается он между определением переменной $last_mod_stamp и выводом заголовков кеширования.
______
P.S. Если вы тестируете в Опере, то ниче не сработает. Опера никогда не отправляет этот заголовок. | |
|
|
|
|
|
|
|
для: Sfinks
(30.01.2012 в 20:03)
| | Я в игноре или мое описание в теме http://softtime.ru/forum/read.php?id_forum=5&id_theme=84713&page=1 не заметно?
Ваше описание и замечено, и изучено, и использовано.
Сорри, что не написал благодарности сразу - для осмысления требуется время!
Спасибо Вам за совет и помощь! | |
|
|
|
|
|
|
|
для: cheops
(30.01.2012 в 12:51)
| | > Переменной окружения HTTP_IF_MODIFIED_SINCE нет
ЕСТЬ!
> и по умолчанию она не создается - эту переменную вы ввели сами
Создается, если сервер передает этот заголовок.
> Еще раз хочу подчеркнуть, нет стандартной переменной окружения HTTP_IF_MODIFIED_SINCE
Еще раз хочу подчеркнуть, ОНА ЕСТЬ в массиве $_SERVER. | |
|
|
|
|
|
|
|
для: Владимир55
(30.01.2012 в 12:36)
| | Я чет не понял!
Я в игноре или мое описание в теме http://softtime.ru/forum/read.php?id_forum=5&id_theme=84713&page=1 не заметно?
Все что там написано было обнаружено на локале, но сейчас я проверил на хостинге и все актуально и для хостинга. Вот заголовки в подтверждение:
GET /477/23188/thumb.css HTTP/1.1
Host: site.info
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; ru; rv:1.9.2.24) Gecko/20111103 Firefox/3.6.24
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,text/vnd.wap.wml;q=0.6
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
If-Modified-Since: Sun, 15 Jan 2012 23:48:14 +0000
Cache-Control: max-age=0
HTTP/1.1 304 Not Modified
Date: Mon, 30 Jan 2012 16:00:45 GMT
Server: Apache/2
Connection: Keep-Alive
Keep-Alive: timeout=1, max=100
Vary: Accept-Encoding,User-Agent
| _________
P.S. Cheops, сделайте в форуме тег [выделить красным жирным крупным шрифтом] =((( Все так подробно расписал и как и не писал все равно! | |
|
|
|
|
|
|
|
для: cheops
(30.01.2012 в 15:29)
| | СПАСИБО! | |
|
|
|
|
|
|
|
для: Владимир55
(30.01.2012 в 16:31)
| | Можно и так, особенно, если после этого правила больше не будет никаких других правил. | |
|
|
|
|