Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DOMDocument, Особенности работы 
:(
    Опции темы
webevt
  Дата 18.3.2008, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 5.5.2005

Репутация: нет
Всего: 3



Сколько времени занимает создание объекта DOMDocument в Internet Explorer?
Код

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

Что делает IE при создании этого объекта, к каким ресурсам обращается?

Собственно, такой возник вопрос из-за того, что именно из-за этого IE очень сильно замедляет загрузку страницы, обращаясь по пути ко всем необходимым DTD-документам на w3.org. Причем происходит эти обращения только при срабатывающем mod_rewrite.

Класс, обеспечивающий создание DOMDocument и загрузку xml-документа:
Код

// обьект
DOM = new Object( );

// параметры
DOM.XMLString = null; // загрузка XML из строки
DOM.XMLFile   = null; // загрузка XML из файла
DOM.XMLDoc        = null;  // XML документ
DOM.XSLDoc        = null;  // XSL документ

// загрузка данных
DOM.Load = function( )
{
  if ( document.implementation && document.implementation.createDocument )
  {
    if( DOM.XMLString )
      DOM.XMLDoc = new DOMParser( ).parseFromString ( DOM.XMLString, "text/xml" );

    DOM.XMLDoc = document.implementation.createDocument ( "", "", null );
  }

  else if ( window.ActiveXObject )
  {
    try { DOM.XMLDoc = new ActiveXObject('MSXML2.DomDocument'); }

    catch( e )
    {
      try { DOM.XMLDoc = new ActiveXObject('Microsoft.DomDocument'); }

      catch( e )
      {
        try { DOM.XMLDoc = new ActiveXObject('MSXML.DomDocument'); }

        catch( e )
        {
          try  { DOM.XMLDoc = new ActiveXObject('MSXML3.DomDocument'); }

          catch( e ) { DOM.XMLDoc = false; }
        }
      }
    }
  }

  DOM.XMLDoc.async = false;
  if( DOM.XMLFile )
    DOM.XMLDoc.load( DOM.XMLFile );
  else if( DOM.XMLString )
    DOM.XMLDoc.loadXML( DOM.XMLString );

  return DOM.XMLDoc;
}

// получение данных
DOM.asXML = function ( )
{
  if( !DOM.XMLDoc )
    return false;

  if ( document.implementation && document.implementation.createDocument )
  {
    return new XMLSerializer( ).serializeToString ( DOM.XMLDoc );
  }
  else if( window.ActiveXObject )
    return DOM.XMLDoc.xml;
}

// трансформирование XML
DOM.XSLT = function( )
{
  if( !DOM.XMLDoc || DOM.XSLDoc )
    return false;

  if ( document.implementation && document.implementation.createDocument )
  {
    var XSLT = new XSLTProcessor ( );
    XSLT.importStylesheet ( DOM.XSLDoc );
    var XHTMLDoc = XSLT.transformToDocument ( DOM.XMLDoc );

    return new XMLSerializer( ).serializeToString( XHTMLDoc );
  }
  else if ( window.ActiveXObject )
    return DOM.XMLDoc.transformNode( DOM.XSLDoc );
}



Настройки mod_rewite в .htaccess можно посмотреть в оригинальной теме:
http://forum.vingrad.ru/forum/topic-200839.html
PM MAIL   Вверх
Fortop
Дата 18.3.2008, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 1
Всего: 42



Цитата(webevt @  18.3.2008,  14:47 Найти цитируемый пост)
 я не посылаю аякс-запросов при загрузке....

Не понял... В свете ниже изложенного
Цитата(webevt @  18.3.2008,  14:47 Найти цитируемый пост)
 Скрипт проверяет существование этого метода(простой if()) и выполняет загрузку xml-дока.

Загрузку ты чем выполняешь и когда она у тебя происходит?

Или ты хочешь сказать что вызов твоего класса нигде не происходит, но IE сам по себе лезет несколько раз за DTD?


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
webevt
Дата 18.3.2008, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 5.5.2005

Репутация: нет
Всего: 3



Цитата(Fortop @  18.3.2008,  17:07 Найти цитируемый пост)
Загрузку ты чем выполняешь и когда она у тебя происходит?

Класс Ajax здесь не причем, на его месте могло быть и что-то другое. Если проверку на существование этого метода убрать, то в корне ничего не изменится) На него можно не обращать внимание.

Загрузка выполнятся в ходе загрузки всей страницы. И тормоза начинаются не при чтении xml-документа, а еще только при создании объекта DOMDocument. Поэтому, то, что находится в xml-доке и как я его буду получать - роли не играет.
PM MAIL   Вверх
Sardar
Дата 18.3.2008, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Взгляни на 43 строчку, похоже это твоя "проблема". Вообще синхронные загрузки (друг за дружкой, водном потоке, блокирующие) - это зло.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
webevt
Дата 19.3.2008, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 5.5.2005

Репутация: нет
Всего: 3



Sardar, спасибо большое, помогло smile 

Но почему такие проблемы возникают только при включеном mod_rewrite? (просто интерес, может и другим интересно )

Спасибо всем за участие! smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0797 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.