javascript - создание - замена iframe на ajax




Почему iframe так медленно? (2)

У меня есть немного более длинный вопрос для вас - но надеюсь, что ответ будет очень простым :)

Допустим, у меня очень простая страница со ссылкой и iframe (просто для простого примера).

<body>
    <a href="test.html" target="mframe">open link></a>
    <iframe name="mframe" [params] />
</body>

Поэтому, когда вы нажимаете на ссылку, она загружает test.html в фрейм.

Теперь я буду менять iframe с помощью div и ajax.

<body>
    <a href="doAjaxCall('test.html')">open link</a>
    <div id="main-content"></div>
</body>

DoAjaxCall будет просто использовать GET ajax requset, чтобы получить весь ответ, проанализировать его (используя JavaScript) и захватить контент в теге <body> и поместить его в main-content.innerHTML.

test.html содержит много html, также css-стилей (но то же самое, что и на родительской странице, поэтому я не нуждаюсь в них, когда я использую решение ajax).

Вопрос:

Почему это решение ajax SO быстрее? Я все равно загружаю один и тот же объем данных (загружая весь файл test.html).

Почему решение iframe так медленно? Это из-за того, что браузеру нужно снова разобрать все возможные стили? Или есть другие накладные расходы iframe?


Вы в значительной степени на правильном пути. iframes будут медленнее, потому что для браузера есть дополнительные накладные расходы (рендеринг, сохранение его экземпляра и ссылок на него).

Вызов ajax будет немного быстрее, потому что вы получаете данные, а затем вводите их или делаете с ним все, что хотите. В iframe необходимо будет создать совершенно новую «страницу» в памяти браузеров, а затем поместить ее на страницу.






iframe