Лучше загрузить всю страницу, затем отобразить фрагмент или загрузить только фрагмент? - PullRequest
1 голос
/ 03 августа 2011

Это больше "Я правильно думаю", чем вопрос.

У меня есть контроллер и функция, которая загружает представление заголовка, представление динамического содержимого и представление нижнего колонтитула.

В моем представлении содержимого есть ссылка, которая при нажатии jquery изменяет содержимое. Это делается путем загрузки (с помощью .load ()) того же контроллера, но с передачей переменной $ ajax = 'yes';

При использовании этого мой контроллер знает, что не нужно снова загружать верхний / нижний колонтитул, а просто загружать часть содержимого.

Это прекрасно работает.

Затем я наткнулся на способность jqueries загружать фрагмент. Правильно ли я считаю, что мой способ ведения дел лучше с точки зрения использования ресурсов, потому что, используя загрузки фрагментов, я бы загружал всю страницу, а затем отображал только фрагмент ... I.E Нет сохранения.

Предполагая, что это правильно, есть ли способ достичь того, чего я пытаюсь добиться эффективно, который не требует:

if(!$ajax){load header/footer}

в начале каждой функции контроллера на основе ajax?

Ответы [ 2 ]

0 голосов
/ 03 августа 2011

Встроенный Codeigniter для проверки того, является ли запрос из источника AJAX

$this->input->is_ajax_request();

, поэтому вам не нужно передавать $ajax назад, чтобы знать, что это ajax.

Я думаю, что гораздо эффективнее проверить на ajax на стороне сервера, чем использовать jquery .load() с селектором, потому что вы все еще загружаете весь заголовок / нижний колонтитул в запросе, jquery просто умно выбираетсодержание вы после.Таким образом, с точки зрения производительности вы не увидите никаких улучшений по сравнению со статическими страницами, кроме полного обновления страницы.

0 голосов
/ 03 августа 2011

Я некоторое время не работал с codeigniter, но если я правильно помню, у него есть константа с именем IS_AJAX_REQUEST, поэтому вам не нужно передавать ее вместе с самим запросом.

Отвечая на ваш вопрос, это возможно, если вы создадите базовый класс контроллера, который расширяет контроллер CI (не знаю точного имени класса, извините) и заставляет все остальные контроллеры расширять его.

Тогда вы могли бы написать свою пользовательскую функцию рендеринга, которая будет проверять IS_AJAX_REQUEST и отображать либо весь макет, либо только конкретный вид.

Но вам придется выяснить, как обрабатывать перенаправления и тому подобное. Или, возможно, вместо рендеринга представления вы хотели бы вывести JSON.

Отвечая на другой ваш вопрос, да, лучше всего загрузить только часть html, чем выводить весь файл и извлекать из него часть. Но вы можете рассчитать размер вашего верхнего и нижнего колонтитула. Я не думаю, что это так много. Поэтому я думаю, что вы должны стремиться к улучшению пользовательского опыта в основном.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...