Как стать автором
Обновить

Комментарии 31

Пожалуй, добавлю:

1) Обновляемый аяксом контент должен влезать в экран пользователя — очень сильно раздражает скроллить страницу туда-сюда.
2) Не стоит загружать контент сразу после того, как загружена основная страница. Пример — Друзья Онлайн в контакте. При переходе на эту вкладку загружается страница, а потом отдельно загружается аяксом список друзей. Когда он большой, это заметно замедляет работу браузера. Со списком друзей аналогичная проблема — представляю, каково людям, у которых несколько сотен друзей :)
Ну это немного не о том… Я подошел к вопросу с идеологической стороны.
Несколько сотен друзей в любом случае рендерятся долго, не зависимо от того, каким способом контент получается с сервера. Да и вообще, я имел в виду традиционные сайты предоставляющие пользователю какой-то материальный контент (блоги, новости, и т.д.). Социальные сети, в котором контентом по сити являются связи, я не рассматривал.
Можно хитро комбинировать некоторые вещи, как на хабре — комментарии загружаются по нормальному, а обновить можно через ajax.
Ребята, я ж говорю — это просто идеологическая догма, которую я для себя формализовал. Конечно из любого правила есть исключения. Комменты на хабре мне не очень нравятся. Моя опера 9.62 (Linux) очень сильно тормозит, когда комментов много. (Так же как и в LJ)

Я не дизайнер пользовательских интерфейсов, и моё мнение нельзя считать компетентными, но возможно комменты стоило сдлеать в отдельной панели со скроллингом. Я был бы этому рад.
Постойти, мы говорим о «опера тормозит с большим кол-во комментариев» или «опера тормозит при ajax запросе на новые комментарии», если о втором — так это у всех :)
Опера тормозит при обработке большого колличества информации по средствам JavaScript.
Возможно тут бы как раз и помог пагинатор.
Хм, ну перегружайте тогда страницу, для того что бы увидеть все комментарии :)
Может причина в браузере? Ну у меня же не тормозит, при том что ff среднее кушает 300Мб памяти.
Возможно, что причина в браузере.
Но мне, если честно, всё-равно. Мне нравится браузер Опера, и я скорее откажусь от Хабрахабра, если у него появятся конкуренты, чем от браузера.
>скорее откажусь от Хабрахабра
вы себя же урежете в потоке полезной информации.
>если у него появятся конкуренты
не скоро ;)

Я не говорил о опере ничего плохого. Обычно, обычно, топик имеет комментариев 100-150, что не много и если они тормозят то это уже не сайта дело :).

Вы конечно правы, что нужно с умом относится к каждой технологии. Не тыкать ее куда не надо, абы понтов было больше.
Firefox работает с JavaScript-ом быстрее Оперы. Тут на хабре недавно был тест. (Самый быстрый Google Chrome, на втором месте FF3) Но я пока не готов отказаться от Оперы.

Вы хотите упрекнуть ОС Linux в неправильной работе или меня лично в том, что я не достаточно профессионально пользуюсь/настроил свой браузер? :)
Хаха :) Ну что вы, что за глупости.
Про скорость обработки знаю, а браузер настраивать в идеале не надо) он должен просто хорошо работать.

Сам испытываю неудобства на хабре, но не жалуюсь. И даже когда мной любимый ff выпадает, или откушивает по 600Мб, я все воспринимаю с пониманием ;)
«Настройка браузера» — это была шутка.

Я тоже не жалуюсь никогда. Я просто ухожу к конкуренту или сам становлюсь конкурентом. :)
Опера тормозит при обработке большого колличества информации по средствам JavaScript.
Возможно тут бы как раз и помог пагинатор.
Хороший пример alllance.com
Первоое впечатление, что сайт состоит из одной страницы, все настройки и дополнительная информация во всплывающих ajax-окнах.
НО! www.alllance.com/index.html — Нормальная html-версия сайта.
Молодцы ребята, никого не обделили, ни пользователей, ни поисковиков.
Предположим, что вы мой друг и нашли на этом сайте для меня работу. Попробуйте прислать мне ссылку на неё.
Давайте для начала предположим, что работу искать я буду для себя. Ссылка — нажимаешь на нужную строку и, опять же, во всплывающем окне отображается более подробная информация о проекте. Ссылка на сайт-родитель там-же.
Ок. Давайте предположим.
Вот вы себе выбрали например 5 проектов. И думате за какой же из них браться. Как будете между ними переключаться? В закладки не добавишь, в отдельном табе не откроешь…

По-моему alllance.com удачный пример бестолкового использования ajax. Это всего лишь моё мнение. Если вам кажется такая организация удобной, значит этот сайт делали для вас. А я бы искал работу на другом сайте.
Зачем вы всё усложняете? Неужели этот сайт действительно делали именно для меня, раз там только мне всё понятно?

Пример: Мне нужно выбрать 5 проектов, пусть это будут первые 5 подряд. Нажимаю на строку, выскакивает окно, в котором есть описание и есть ссылка «Оставить комментарий». Если делаем двойной клик по описанию — попадаем на родительский сайт этого проекта, в новом табе!, а если жмем «Оставить комментарий» — непосредственно попадаем в поле для написания своего предложения. Куда проще?

В корне не согласен, что этот сайт бестолковый.
Я им пользуюсь, имею платный аккаунт, + к нему идет софтина, которая показывает последние проекты исходя из настроек на сайте. Правда это к AJAX уже никак не относится.
Все функциональные контролы сайта только через ajax
тут главное не перестараться — пользователь может захотеть открыть что-то и в соседней вкладке (отдельном окне). На широкоформатном мониторе, допустим, удобно писать комментарий в одном окошке, а рядом большую статью свободно листать туда-сюда.
Тогда можно сделать форму добавления комментария оверлеем поверх статьи. И чтобы саму форму можно было перетаскивать. Отличная идея на мой взгляд. :)

Тут тоже можно формализовать этот подход. Например на хабрахабре много статей. Каждая статья это документ. Поэтому каждый отдельный документ можно и удобно открывать в новой вкладке. Но ежели вы хотите написать комментарий к уже открытому документу, на самом ли деле вы хотите открыть новую вкладку? Вы просто хотите видеть одновременно то, что пишете, и комментируемый материал.
>Бывает это так: форма авторизации переводит пользователя на отдельную страницу… Я тоже так когда-то делал, когда не знал, что такое ajax. Эти страницы просто занимались обработкой параметров $_POST, и когда пользователь жал F5 на такой странице, post-запрос отправлялся повторно. Я и тогда понимал, что что-то есть неправильное в этом подходе, но что конкретно сказать не мог.

Ну для этого аякс не нужен, просто можно сделать редирект с обработчика формы назад на текущую страницу.

>Все функциональные контролы сайта только через ajax: добавление комментариев, форма авторизации, переключение тем сайта и т.д.

А если JS отключен?
Я пока не могу вам объяснить, почему создание такой страницы с редиректом и перенаправления запроса авторизации на неё плохо, но мне это говорит голос. :)

А если пользователь ввёл пароль неправильно? В случае с ajax запросом, клиенту прилетает либо xml-ка вида:

Неправильное имя пользователя или пароль.



которую клиент уже сам обработает. Логика работы сосредоточена в одном js-обработчике ответа. (Возможно следующим топиком напишу, как я обычно работаю с AJAX. Хороших HOWTO я не видел.) В случае страницы с редиректом… я вообще не представляю, как это делать. :)

Когда отключен js, я не знаю что делать. Дублировать код очень не хочется, процент пользователей с отключеным js пренебрежимо мал, поэтому обычно я не делаюю ничего.
Неправильно, по-моему, вы поняли схему — создается обработчик авторизации (а вообще говоря аутенфикации) /login.php например, в форме его адрес, при сабмите он принимает логин/пароль, проверяет и если все хорошо отправляет назад на ту страницу где был пользователь (по простому берет ее из реферера, по хорошему адрес записывается в хидден поле формы или сессии). Если же логин/пароль неверные, т он выводит собщение сооответсвующе, форму на весь экран, а когда пользователь соблаговолит ввести верные данные, то редиректит его на первоначальную страницу.

>Когда отключен js, я не знаю что делать.
Плохо :)

>Дублировать код очень не хочется,
А нужно ли его дублировать? Логика работы одинаковая у скрипта аутенфикации того же, различается только формат запроса (и то не факт) и формат ответа. При приходе запроса определяем ajax это или простой http, соответствующим образом вытаскиваем параметры (логин/пароль) из запроса, проводим общую проверку, пишем, если надо что-то в сессию, и выводим ответ в соответствующем формате (используя шаблонизатор например). Первый раз реализовать может не просто (если не пользоваться фреймворками), но потом все однотипные действия (вытаскивание параметров, отображение шаблонов и т. п.) повторяются и в обработчике добавления комментария к посту вам надо будет реализовать только логику добавления и нарисовать два шаблона — XML и HTML (и то, он больше для ошибок, а так просто редирект на форму отображения поста). Если же вас приспичит сделать например серверный API принимающий сериализованный запрос подписанный электроннйо подписью (и ответ так же выводящий), то просто еще один способ разбора параметров и еще один способ вывода.
Когда я писал на PHP я пользовался Zend FW. Сейчас я пишу на Java GWT приложение. Пока до обычных html страниц не добрался.

На сколько я понимаю, что отличается обычный запрос от браузера и ajax запрос только одним полем: httpRequest или что-то вроде того. Я не знаю, все ли браузеры выставляют это поле. (Все?) Если все, то тогда ваш вариант я одобряю. :)

И всё же, применительно к авторизации, я против того, чтобы перекидывать пользователя со страницы на страницу. Я так просто могу забыть с какой страницы я пришел и зачем. Для того, чтобы отобразить строку «вы не верно ввели пароль», достаточно полоски 10х100 пикселей. Не нужно создавать для этого отдельную страницу.
Насколько я знаю все, по крайней мере фреймворки типа JQuery такое поле посылают, да и никто не мешает вам для уверенности добавить еще одно поле в AJAX запрос.

Ну фишка в том, что вам не надо помнить, для вас это выглядит так:
— вбиваете логин и пароль на странице поста в форму, например, в сайдбаре
— идет отсылка запроса на /login
— если все ОК, то /login не возвращает html кода, а через http редирект отправляет вас назад на ту же страницу поста, но уже, например, с меню управления профилем вместо блока аутенфикации
— если ошиблись, то выдает страницу с сообщением об ошибке, полями ввода, возможно тут же форма «забыли пароль» и т. п.
— когда наконец вспомните, то скрипт вернет вас опять на ту страницу поста, где вы вводили логин пароль в первый раз

А, в принципе, и в полоске 10х100 пикселей можно написать, даже проще, не надо реализовывать еще одну страницу, единственное, что при отключенном JS нельзя реализовать ее пропадание через некоторое время

Подскажите пожалуйста, как в хабрахабре вставлять примеры кода в комментах? :)
<code>… </code> или <pre>… </pre>
А если я хочу использовать xml? Я вот там хотел привести примен xml-документа.
Не согласен, что ajax оправдан при авторизации. На пример бывают проекты, в которых для авторизованных пользователей выводится другая информация, по отношению к неавторизованным. В таком случае если использовать ajax придется перезагружать пол страницы.
Я тут не очень конкретно наверное выразился. Процесс авторизации происходит через ajax. И если пользователь не смог авторизоваться (например потому, что неверно ввёл пароль), то для этого не нужно перенаправлять его на отдельную страницу, а достаточно вывести текст ошибки в форме или рядом с ней.

Если же пользователь авторизовался успешно, то лучше страничку перезагрузить, если элементов подлежащих изменению действительно много.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории