|
|
|
| Это тема уже обсуждалась на форуме , спасибо что подняли такую тему.
Вообщем столкнулся с такой проблемой.
При кэшировании страницы, и при повторном запросе клиентом когда сервер отдает 304 код, у меня вроде все работает, но css- файл очень долго загружается. Тестирую на денвере.
В htaccess немного подкоректировал вот эту запись:
было:
RewriteRule ^(.*)$ $1 [E=HTTP_IF_MODIFIED_SINCE:%{HTTP:If-Modified-Since}]
стало:
RewriteRule [^\.css|.js|\.jpeg|\.jpg|\.png|\.gif]$ $1 [L,E=HTTP_IF_MODIFIED_SINCE:%{HTTP:If-Modified-Since}]
Скорость загрузки вроде уменьшилось, но почему-то вижу в запросах (для css) If-Modified-Since. По идее его не должно быть.
Короче совсем запутался(((
P.S. Да и еще. При первом запросе к CSS файлу сервер отдает Last-Modified. Откуда он берется? У меня для динамических страниц время изменения хранится в базе. Ничего не понимаю... | |
|
|
|
|
автор: ..... (05.02.2013 в 06:14) |
|
|
для: Izcian
(05.02.2013 в 00:09)
| | > [^\.css|.js|\.jpeg|\.jpg|\.png|\.gif]$
такой шаблон то-же самое что и такой [^.csjpegnif]$
>$1
в шаблоне нет скобок () , если надо ставить без изменений то - (минус)
в RewriteRule , нет проверки на несовпадение, только на совпадение
, поэтому сделать так, как хотите сделать, сможете только с RewriteCond
RewriteCond %{REQUEST_FILENAME} !\.(php|css)$
RewriteRule ^.* - [L.................]
или с перечислением расширений которые наоборот нужны | |
|
|
|
|
автор: ..... (05.02.2013 в 06:29) |
|
|
для: .....
(05.02.2013 в 06:14)
| | >в RewriteRule , нет проверки на несовпадение, только на совпадение
или есть ?
RewriteRule !\.(css)$ - [T=text/plain]
работает
Недокументировано, как и RewriteCond %{....} !...... | |
|
|
|
|
автор: ..... (05.02.2013 в 06:35) |
|
|
для: .....
(05.02.2013 в 06:29)
| | Вообщето документировано
>In mod_rewrite, the NOT character ('!') is also available as a possible pattern prefix. This enables you to negate a pattern; to say, for instance: ``if the current URL does NOT match this pattern''. This can be used for exceptional cases, where it is easier to match the negative pattern, or as a last default rule. | |
|
|
|
|
|
|
|
для: .....
(05.02.2013 в 06:14)
| | Подскажите пожалуйста, почему закоментировав строчку где [E=HTTP_IF_MODIFIED_SINCE:%{HTTP:If-Modified-Since}] все равно идет ответ 304. Ведь тогда $_SERVER['HTTP_IF_MODIFIED_SINCE'] не должна создаваться? | |
|
|
|
|
автор: ..... (05.02.2013 в 18:40) |
|
|
для: Izcian
(05.02.2013 в 12:20)
| | Потомучто If-Modified-Since передаёт браузер
Вы тот топик до конца дочитали ?
попробуйте без всяких .htaccess такой скрипт
<xmp><?php
# скрипт читает сам себя по адресу http://tools/curl.php
if (isset($_COOKIE['name'])) {
print_r($_SERVER);
exit;
}
$ch = curl_init();
curl_setopt_array($ch, array(
CURLOPT_RETURNTRANSFER => 0,
CURLOPT_HEADER => 1,
CURLOPT_NOBODY => 0,
CURLOPT_TIMEOUT => 20,
CURLOPT_NOPROGRESS => 1,
CURLOPT_URL => 'http://tools/curl.php',# a
CURLOPT_HTTPHEADER => array(
'cookie: name=admin; passwd=12345;',
'useragent: Opera 9/1 (WinXP; U; ru)',
'If-Modified-Since: Sun, 15 Jan 2012 23:48:14 +0000')
));
curl_exec($ch);
|
Почему передаёт браузер ? Потомучто адес уже есть у него в кэше
и он получил в прошлый раз заголовок Last-Modified в совокупности с например Cache-Control
возможно ещё по каким-нибудь своим соображениям браузера | |
|
|
|
|
|
|
|
для: .....
(05.02.2013 в 18:40)
| | Я вроде немного понимаю во всех этих запросах=ответах, просто хочу понять, почему на загрузку CSS уходило столько времени? Вроде и 304 отдается, в заголовках вижу Last-Modified и Etag, а вот Cache-Control не вижу. Хотя и пытался их сделать через mod_headers в htaccess
Сейчас вечером попробовал установить Экспириес то же в htaccess и почему-то время загрузки резко сократилось. Хотя и их в заголовках не вижу...Блин, голова пухнет от этих премудростей)) | |
|
|
|