dzimedrol
Новичок
IF-NONE-MATCH
Уже начинаю тупить... Настроил проверку кэширования через If-Modified-since, все работает. Но понял, что мне этого не хватает - нужна более полная информация о странице, чем просто дата. Решил использовать md5-хэш через Etag. Вот как выглядит обмен заголовками браузера с сервером:
GET http://blablabla HTTP/1.1
Host: blablabla
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Proxy-Connection: keep-alive
If-None-Match: ac021954d544fb7c978d65d06e5a3459
HTTP/1.x 200 OK
Connection: close
Proxy-Connection: close
Date: Wed, 23 Nov 2005 09:27:56 GMT
Server: Apache/1.3.33 (Unix) mod_choke/0.06 mod_gzip/1.3.26.1a mod_auth_passthrough/1.8 mod_log_bytes/1.2 mod_bwlimited/1.4 mod_ssl/2.8.22 OpenSSL/0.9.7d
Etag: ac021954d544fb7c978d65d06e5a3459
Content-Type: text/html
Скрипт, к которому идет обращение, распечатывает getallheaders() и $_SERVER[], вот что он выдает:
Array
(
[DOCUMENT_ROOT] => blablabla
[HTTP_ACCEPT] => text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
[HTTP_ACCEPT_CHARSET] => ISO-8859-1,utf-8;q=0.7,*;q=0.7
[HTTP_ACCEPT_ENCODING] => gzip,deflate
[HTTP_ACCEPT_LANGUAGE] => en-us,en;q=0.5
[HTTP_CONNECTION] => Keep-Alive
[HTTP_HOST] => blablabla
[HTTP_USER_AGENT] => Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4
[PATH] => /bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin
[REMOTE_ADDR] => blablabla
[REMOTE_PORT] => blablabla
[SCRIPT_FILENAME] => blablabla
[SERVER_ADDR] => blablabla
[SERVER_ADMIN] => blablabla
[SERVER_NAME] => blablabla
[SERVER_PORT] => 80
[SERVER_SIGNATURE] =>
[SERVER_SOFTWARE] => Apache/1.3.33 (Unix) mod_choke/0.06 mod_gzip/1.3.26.1a mod_auth_passthrough/1.8 mod_log_bytes/1.2 mod_bwlimited/1.4 mod_ssl/2.8.22 OpenSSL/0.9.7d
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.0
[REQUEST_METHOD] => GET
[QUERY_STRING] =>
[REQUEST_URI] => blablabla
[SCRIPT_NAME] => blabla
[PATH_TRANSLATED] => blablabla
[PHP_SELF] => blablabla
[argv] => Array
(
)
[argc] => 0
)
Array
(
[Accept] => text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
[Accept-Charset] => ISO-8859-1,utf-8;q=0.7,*;q=0.7
[Accept-Encoding] => gzip,deflate
[Accept-Language] => en-us,en;q=0.5
[Connection] => Keep-Alive
[Host] => blablabla
[User-Agent] => Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4
)
Дело в том, что тут нет If-None-Match! Но Live HTTP headers-то его показал!
Уже начинаю тупить... Настроил проверку кэширования через If-Modified-since, все работает. Но понял, что мне этого не хватает - нужна более полная информация о странице, чем просто дата. Решил использовать md5-хэш через Etag. Вот как выглядит обмен заголовками браузера с сервером:
GET http://blablabla HTTP/1.1
Host: blablabla
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Proxy-Connection: keep-alive
If-None-Match: ac021954d544fb7c978d65d06e5a3459
HTTP/1.x 200 OK
Connection: close
Proxy-Connection: close
Date: Wed, 23 Nov 2005 09:27:56 GMT
Server: Apache/1.3.33 (Unix) mod_choke/0.06 mod_gzip/1.3.26.1a mod_auth_passthrough/1.8 mod_log_bytes/1.2 mod_bwlimited/1.4 mod_ssl/2.8.22 OpenSSL/0.9.7d
Etag: ac021954d544fb7c978d65d06e5a3459
Content-Type: text/html
Скрипт, к которому идет обращение, распечатывает getallheaders() и $_SERVER[], вот что он выдает:
Array
(
[DOCUMENT_ROOT] => blablabla
[HTTP_ACCEPT] => text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
[HTTP_ACCEPT_CHARSET] => ISO-8859-1,utf-8;q=0.7,*;q=0.7
[HTTP_ACCEPT_ENCODING] => gzip,deflate
[HTTP_ACCEPT_LANGUAGE] => en-us,en;q=0.5
[HTTP_CONNECTION] => Keep-Alive
[HTTP_HOST] => blablabla
[HTTP_USER_AGENT] => Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4
[PATH] => /bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin
[REMOTE_ADDR] => blablabla
[REMOTE_PORT] => blablabla
[SCRIPT_FILENAME] => blablabla
[SERVER_ADDR] => blablabla
[SERVER_ADMIN] => blablabla
[SERVER_NAME] => blablabla
[SERVER_PORT] => 80
[SERVER_SIGNATURE] =>
[SERVER_SOFTWARE] => Apache/1.3.33 (Unix) mod_choke/0.06 mod_gzip/1.3.26.1a mod_auth_passthrough/1.8 mod_log_bytes/1.2 mod_bwlimited/1.4 mod_ssl/2.8.22 OpenSSL/0.9.7d
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.0
[REQUEST_METHOD] => GET
[QUERY_STRING] =>
[REQUEST_URI] => blablabla
[SCRIPT_NAME] => blabla
[PATH_TRANSLATED] => blablabla
[PHP_SELF] => blablabla
[argv] => Array
(
)
[argc] => 0
)
Array
(
[Accept] => text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
[Accept-Charset] => ISO-8859-1,utf-8;q=0.7,*;q=0.7
[Accept-Encoding] => gzip,deflate
[Accept-Language] => en-us,en;q=0.5
[Connection] => Keep-Alive
[Host] => blablabla
[User-Agent] => Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4
)
Дело в том, что тут нет If-None-Match! Но Live HTTP headers-то его показал!
