Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > IE и mod_rewrite


Автор: webevt 15.3.2008, 20:32
IE слишком долго думает при использовании mod_rewrite. Время загрузки почти пустой страницы ~3 секунд.. В остальных браузерах такого не наблюдается..

Содержимое .htaccess:
Код

# BEGIN Engine

ErrorDocument 401 /errors/error401.html
ErrorDocument 403 /errors/error403.html
ErrorDocument 404 /errors/error404.html
ErrorDocument 500 /errors/error500.html

RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} ^www.engine
RewriteRule (.*) http://engine/$1 [R=301]

RewriteRule ^module/([a-zA-Z0-9]*) index.php?module=$1 [NC,L]

# END Engine


В чем может быть проблема?..

Автор: Feldmarschall 15.3.2008, 21:26
в чем угодно.
для начала смотри http заголовки, http://phpfaq.ru/na_tanke#headers

Автор: webevt 15.3.2008, 22:10
Функция getallheaders( ) вернула мне такие данные:
Код

Array
(
    [Accept] => image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
    [Accept-Language] => ru
    [UA-CPU] => x86
    [Accept-Encoding] => gzip, deflate
    [User-Agent] => Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; WebMoney Advisor; .NET CLR 1.1.4322)
    [Host] => engine
    [Connection] => Keep-Alive
    [Cookie] => Engine=915607474c41805c6060ae987ab13e26
)



P.S. Не на танке я smile На бронепоезде!

Автор: gta4kv 15.3.2008, 22:14
Может из-за gzip'a? Он включен?

Автор: Feldmarschall 15.3.2008, 22:16
Полный обмен заголовками, а не getallheaders

Автор: skyboy 15.3.2008, 22:22
Цитата(webevt @  15.3.2008,  21:10 Найти цитируемый пост)
Функция getallheaders( )

это заголовки запроса от браузера. а как насчет http://ua2.php.net/manual/ru/function.apache-response-headers.php?

Автор: webevt 15.3.2008, 22:23
Вот полный: 
Код

GET / HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Accept-Language: ru
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; WebMoney Advisor; .NET CLR 1.1.4322)
Host: engine
Connection: Keep-Alive
Cookie: Engine=97f5ad206e290172f1f89bba7c85e87c

HTTP/1.1 200 OK
Date: Sat, 15 Mar 2008 19:21:08 GMT
Server: Apache/2.2.4 (Win32) mod_ssl/2.2.4 OpenSSL/0.9.8d
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
X-Compression: GZip
Content-Encoding: GZip
Content-Length: 1774
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=windows-1251



Цитата(gta4kv @  15.3.2008,  22:14 Найти цитируемый пост)
Может из-за gzip'a? Он включен? 

Включен. Но в Опере и Лисе все работает на ура...проблемы только с IE

Автор: gta4kv 15.3.2008, 22:27
webevt, попробуй выключить.. ie он такой.. глючный smile

Автор: webevt 15.3.2008, 22:39
gta4kv, 
 нет, сжатие тут вроде непричем.
 Думал тормозит из-за заголовка Content-Length(размер передаваемых данных узнаю через ob_get_length) - изменил его, потом отключил вообще сжатие, но на скорость IE это никак не повлияло.

Наблюдение: IE быстро загружает страницу, если на ней произошла какая-то ошибка. На сайте свой обработчик. При выводе ошибки, основная часть сайта(шапка+подвал) все равно загружается, но не тормозит при этом 4 секунды.

Добавлено @ 22:43
Затормаживает так, что на эти 4 секунды подвисает(!!) эксплорер, как будто ему дают загрузить что-то очень большое(не нагруженную графикой страницу, а какую-то статью-книгу smile).

Автор: webevt 15.3.2008, 23:08
Извиняюсь, сначала не понял какие заголовки выкладывать smile Вышеприведенные заголовки взяты с нормально загружающейся страницы, где RewriteRule еще не срабатывает.

Вот заголовки страницы с работающим RewriteRule:
Код

GET /module/starter HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Accept-Language: ru
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; WebMoney Advisor; .NET CLR 1.1.4322)
Host: engine
Connection: Keep-Alive
Cookie: Engine=97f5ad206e290172f1f89bba7c85e87c

HTTP/1.1 200 OK
Date: Sat, 15 Mar 2008 20:01:57 GMT
Server: Apache/2.2.4 (Win32) mod_ssl/2.2.4 OpenSSL/0.9.8d
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
X-Compression: GZip
Content-Encoding: GZip
Content-Length: 1775
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=windows-1251

GET /TR/xhtml1/DTD/xhtml1-transitional.dtd HTTP/1.1
Accept: */*
Referer: http://engine/module/engine.xml
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; WebMoney Advisor; .NET CLR 1.1.4322)
Host: www.w3.org
Connection: Keep-Alive

HTTP/1.1 200 OK
Date: Sat, 15 Mar 2008 20:00:57 GMT
Server: Apache/2
Vary: User-Agent
Last-Modified: Thu, 01 Aug 2002 18:37:56 GMT
ETag: "7d6f-3a72ac59d0900"
Accept-Ranges: bytes
Content-Length: 32111
Cache-Control: max-age=7776000
Expires: Fri, 13 Jun 2008 20:00:57 GMT
P3P: policyref="http://www.w3.org/2001/05/P3P/p3p.xml"
Connection: close
Content-Type: text/plain

GET /TR/xhtml1/DTD/xhtml-lat1.ent HTTP/1.1
Accept: */*
Referer: http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; WebMoney Advisor; .NET CLR 1.1.4322)
Host: www.w3.org
Connection: Keep-Alive

HTTP/1.1 200 OK
Date: Sat, 15 Mar 2008 20:01:06 GMT
Server: Apache/2
Last-Modified: Thu, 01 Aug 2002 13:56:03 GMT
ETag: "2dff-3a726d58522c0"
Accept-Ranges: bytes
Content-Length: 11775
Cache-Control: max-age=7776000
Expires: Fri, 13 Jun 2008 20:01:06 GMT
P3P: policyref="http://www.w3.org/2001/05/P3P/p3p.xml"
Connection: close
Content-Type: application/xml-external-parsed-entity

GET /TR/xhtml1/DTD/xhtml-symbol.ent HTTP/1.1
Accept: */*
Referer: http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; WebMoney Advisor; .NET CLR 1.1.4322)
Host: www.w3.org
Connection: Keep-Alive

HTTP/1.1 200 OK
Date: Sat, 15 Mar 2008 20:01:09 GMT
Server: Apache/2
Last-Modified: Thu, 01 Aug 2002 13:56:03 GMT
ETag: "3618-3a726d58522c0"
Accept-Ranges: bytes
Content-Length: 13848
Cache-Control: max-age=7776000
Expires: Fri, 13 Jun 2008 20:01:09 GMT
P3P: policyref="http://www.w3.org/2001/05/P3P/p3p.xml"
Connection: close
Content-Type: application/xml-external-parsed-entity

GET /TR/xhtml1/DTD/xhtml-special.ent HTTP/1.1
Accept: */*
Referer: http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; WebMoney Advisor; .NET CLR 1.1.4322)
Host: www.w3.org
Connection: Keep-Alive

HTTP/1.1 200 OK
Date: Sat, 15 Mar 2008 20:01:15 GMT
Server: Apache/2
Last-Modified: Thu, 01 Aug 2002 13:56:03 GMT
ETag: "1023-3a726d58522c0"
Accept-Ranges: bytes
Content-Length: 4131
Cache-Control: max-age=7776000
Expires: Fri, 13 Jun 2008 20:01:15 GMT
P3P: policyref="http://www.w3.org/2001/05/P3P/p3p.xml"
Connection: close
Content-Type: application/xml-external-parsed-entity


Почему-то в этом случае видны все обращения эксплорера к dtd...это его и тормозит...только вот как от этого избавиться))

[UPDATE]
Убираю doctype - страница быстро грузится, как и других бразуерах...Как только ставлю обратно, IE опять начинает лезть в него, отправлять по 4-5 левых запросов к w3.org..

Автор: webevt 16.3.2008, 13:19
Причину такого торможения я обнаружил...Всему виной оказался javascript, находящийся в теге body, а точнее его содержимое:

Код

  AJAX.callBack = function( response )
  {
    document.getElementById( 'dd' ).innerHTML = response;
  }

Почему переопределение метода в объекте яваскрипта(!!), при работающем mod_rewrite(!!), вызывает такую непонятную реакцию у экслорера?...бред какой-то..

Автор: Fortop 16.3.2008, 14:03
Цитата(webevt @  16.3.2008,  13:19 Найти цитируемый пост)
Почему переопределение метода в объекте яваскрипта(!!), при работающем mod_rewrite(!!), вызывает такую непонятную реакцию у экслорера?...бред какой-то.. 

А ты не хочешь посмотреть, что тебе приходит в этом самом response ? 

Автор: ksnk 16.3.2008, 14:07
Цитата(webevt @  16.3.2008,  13:19 Найти цитируемый пост)
бред какой-то

бред...
Как выглядит тег <script >? должен быть правильный type...

А кеширование в IE отключено? Чего-то он на DTD лазит не предъявляя теги кеширования.

Автор: awers 16.3.2008, 15:57
я думаю вопрос решен, а остальное в разделе JavaScript...

Автор: webevt 16.3.2008, 19:23
Fortop, 
ничего не приходит! smile Я только переопределяю метод, но не запускаю его.
Цитата(ksnk @  16.3.2008,  14:07 Найти цитируемый пост)
Как выглядит тег <script >? 

Код

<script language='JavaScript' type='text/javascript'>


ksnk, 
кэширование в IE включено, в хэдере посылаются заголовки no-cache

Цитата(ksnk @  16.3.2008,  14:07 Найти цитируемый пост)
Чего-то он на DTD лазит не предъявляя теги кеширования

Лазит только тогда, когда срабатывает mod_rewrite и переопределяется js метод..

Цитата(awers @  16.3.2008,  15:57 Найти цитируемый пост)
я думаю вопрос решен, а остальное в разделе JavaScript... 

Ну, кое-как то он решен, но почему появляются такие глюки у эксплореров(6, 7, остальные не проверял) - неизвестно ;)

Автор: ksnk 16.3.2008, 20:25
Ну, тогда...
Цитата(Fortop @  16.3.2008,  14:03 Найти цитируемый пост)
А ты не хочешь посмотреть, что тебе приходит в этом самом response ? 

?

Автор: Fortop 16.3.2008, 21:38
Цитата(webevt @  16.3.2008,  19:23 Найти цитируемый пост)
ничего не приходит! smile Я только переопределяю метод, но не запускаю его.


Цитата(webevt @  16.3.2008,  19:23 Найти цитируемый пост)
Лазит только тогда, когда срабатывает mod_rewrite и переопределяется js метод..


Так не бывает. Я, надеюсь, ты это понимаешь? smile

Либо ты неправильно продиагностировал проблему, либо все таки стоит посмотреть пошагово что и где происходит.


Автор: webevt 17.3.2008, 19:12
Цитата(Fortop @  16.3.2008,  21:38 Найти цитируемый пост)
неправильно продиагностировал проблему, либо все таки стоит посмотреть пошагово что и где происходит

Точно. Прошелся еще раз) В скрипте есть еще одна заковыка: загрузка xml-дока средствами js, что, видимо, не нравится Explorer`у. Просто, не переопределив метод AJAX.callBack, не выполнялась эта загрузка, поэтому и торможение исчезало. 
Могу привести весь класс загрузки xml-документа, только это будет уже больше по части js.. хотя торможение все равно происходит из-за mod_rewrite  smile

IE начинает лезть в dtd при создании объекта DomDocument:
Код

DOM.XMLDoc = new ActiveXObject('MSXML2.DomDocument');

И только при работающем mod_rewrite))

P.S. Извиняюсь за путаницу

Автор: Fortop 17.3.2008, 22:44
Цитата(webevt @  17.3.2008,  19:12 Найти цитируемый пост)
IE начинает лезть в dtd при создании объекта DomDocument:
Код

DOM.XMLDoc = new ActiveXObject('MSXML2.DomDocument');

И только при работающем mod_rewrite))

Есть подозрение, что результаты твоих AJAX запросов не кешируются по какой-то причине, как следствие dtd запрашивается каждый раз.

Автор: webevt 18.3.2008, 14:47
Fortop, 
 я не посылаю аякс-запросов при загрузке, а только переопределеяю метод, который будет обрабатывать эти запросы. Скрипт проверяет существование этого метода(простой if()) и выполняет загрузку xml-дока.

Модераторам: 
создам примерно такую же тему в разделе JS, о скорости работы ActiveXObject('MSXML2.DomDocument')

Автор: webevt 19.3.2008, 22:34
Проблема решена. http://forum.vingrad.ru/forum/topic-201252.html
Всем спасибо.  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)