Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: какими методами пользоваться? [3]
(Добавление)
да и по поводу индексации не работает она на ajax, для админки самое то но для сайта помоему не очень хороший вариант пихать ajax
caballero
Отправлено: 11 Декабря, 2011 - 03:35:27
Активный участник
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
Вообще то если речь идет об админке то там будет работать не случайный юзер с инета и пинать тупо ничего не должен. Да и индексация поисковиками не нужна (обственн о ьуда они и не попадкт без пароля).
С другой стороны и скорость работы там не критична на админке.
Тем более что все современные браузеры поддерживают gzip сжатие контента. То есть никакого выиграша по скорости аякс не даст На сервере для аякса все рано надо подымать PHP на каждый вызов причем вместо одного раза на все страницу, трафик (на случай много текста) прекрасно сжимается gzip. Картинки и так грузятся асинхронно.
То есть преимуществ по сути никаких.
(Добавление) caballero не согласен по поводу пинания кнопок так как если юзер не достаточно умен а позиций много, то на обработку потребуется время не увидев результата пользователь нажмет еще раз кнопку...
tuareg
Отправлено: 11 Декабря, 2011 - 11:12:30
Участник
Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010
Помог: 69 раз(а)
На счет индексации, это все глупости. HTML 5 history API и все проиндексируется.
Теперь на счет всего остального.
Простой пример.
Надо сделать страницу не видимой.
Вариант PHP(полная перезагрузка) этапы
1 Отправляем запрос GET
2 Выполняем запрос MySQL на скрытие
3 Выполняем запрос на вывод всех страницы из MySQL (причем тут уже нет КЭША ни MySQL
удален при UPDATE ни html страницы(т.к она изменилась), максимум закэшированы картинки)
4 Формируем всю страницу и выводим ее + снова инициализирем все плагины и т.д что повешано на страницу это тоже время
Правильно??? Если я что-то не правильно указал Вы поправьте меня
Вариант jQuery+Ajax+PHP
1 Определяем id элемента, который надо скрыть
2 Отправляем запрос GETJSON
3 Выполняем запрос MySQL на скрытие и отправляем флаг о рез-те
4 Меняем класс у картинки.(одна строчка кода 2 команды addClass().removeClass())
Все...
Сами подумайте будет ли тут выигрыш в скорости. (Добавление)
P.S У Google есть рекомендации как сделать так, чтобы сайт использующий ajax нормально проиндексировался.
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
Ну если привести спеуиально подобранный пример тогда конечно.
Какой процент составляют страницы где надо скрыть один элемент да еще и в БД запомнить.
А если не один элемент а 5 разнызх и 5 запросов к серверу?
а если на странице нет никих плагинов и она обновится быстро?
А если страница принадлежит к 99.99999% у которых нет функционала по сокрытию одного элемента и прописыванием его в БД?
Конечно в таких специфических случах я сам использую аякс. Но речь то шла о перепиливвании админки. То есть технической страницы где нет необходимости вешать какие то прибамбасы.
3d_killer
Вообще то у аякса там параметр где то есть - блокировать браузер - зачем мучатся с дивами.
Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010
Помог: 69 раз(а)
caballero пишет:
Ну если привести спеуиально подобранный пример тогда конечно.
Какой процент составляют страницы где надо скрыть один элемент да еще и в БД запомнить.
А если не один элемент а 5 разнызх и 5 запросов к серверу?
Вся админка это скрыть, переместить и т.д все действия для одного элемента в основном.
$('#id1,#id2,#id3,#id4,#id5').... Для 5 элементов
5 запросов это как-то не очень правильно. Ну уж если совсем необходимо процедуры MySQL
caballero пишет:
Вообще то у аякса там параметр где то есть - блокировать браузер - зачем мучатся с дивами.
Вот этого делать не стоит. Паника у User-a начнется. Браузер просто зависнет и все.
caballero
Отправлено: 11 Декабря, 2011 - 14:14:53
Активный участник
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
Цитата:
Вся админка это скрыть, переместить и т.д все действия для одного элемента в основном.
Вообще то в админке важно именно работа с данными которые в БД причем работа надежная без сюрпризов. Реализация интерфейса - вторична. В отличие от например развлекательных сайтов где важно вовремя показать картинку с сиськами Ани Семенович.
Кроме того есть еще один важный момент когда реальный проект и ограниченные время и сроки - трудоемкость.
Гораздо проще принять переменную с $_REQUEST , проапдейтить базу и показать/непоказать елемент с помощью старого доброго if else - несколько строк делов, чем писать файл для ответа аяксу писать сами аякс вызовы и обработчики событий потом запаковать распаковать ответ потом писать обновление елемента ползая по DOM модели, следить чтобы юзер там не тыкал чего пока запрос идет и т.д.
А страницу оптимизировать для скорости. Тем более сам аякс оаботает далеко не мгновенно - почему и вешают всегда всякие крутилки.
Цитата:
Вот этого делать не стоит. Паника у User-a начнется. Браузер просто зависнет и все.
А заблокировать дивом чем лучше. Хотя я сам синхронные вызовы как то ни разу не пользовал -какой смысл использовать аякс без асинхронки.
Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010
Помог: 69 раз(а)
Вам не кажется, что Вы сами себе противоречите?
caballero пишет:
Вообще то в админке важно именно работа с данными которые в БД причем работа надежная без сюрпризов.
caballero пишет:
Конечно в таких специфических случах я сам использую аякс. Но речь то шла о перепиливвании админки. То есть технической страницы где нет необходимости вешать какие то прибамбасы.
caballero пишет:
Гораздо проще принять переменную с $_REQUEST , проапдейтить базу и показать/непоказать елемент с помощью старого доброго if else - несколько строк делов, чем писать файл для ответа аяксу писать сами аякс вызовы и обработчики событий потом запаковать распаковать ответ потом писать обновление елемента ползая по DOM модели, следить чтобы юзер там не тыкал чего пока запрос идет и т.д.
Какая разница в реализации...
Я же написал логику с PHP и jQuery там все до момента отдачи рез-та одинаково.
А после первого запроса идут проверки
Запрос удачный
jQuery: возвращаем флаг 1(true) не важно. Нужно только конвертнуть в Json(в ручную сформировать)
PHP: Делаем запрос в БД, по новой создаем страницу и т.д
Не удачный(ошибка)
jQuery: возвращаем флаг 0 (Выводим сообщение об ошибке)
PHP: Выводим сообщение об ошибке
При jQuery ползать по дому не страшно(да и просто все-таки движок свой они постоянно улучшают оптимизируют), при смене класса(вообще не надо $(this)).
В других случаях это тоже абсолютно не критично
caballero пишет:
А заблокировать дивом чем лучше. Хотя я сам синхронные вызовы как то ни разу не пользовал -какой смысл использовать аякс без асинхронки.
Просто показываем пользователю, что идет процесс обработки рез-та. Див перекрыл всю страничку, по середине какая-нибудь gif-ка. Все красиво.
P.S Я просто как бы к чему так спорю. Очень глупо загружать целую библиотеку ради одной функции. Если уж решили ей воспользоваться, то пользоваться нужно по максиму.(Сложно да ни сколько. Есть много ресурсов и инфы.) (Добавление)
3d_killer пишет:
по поводу пинания кнопок как раз столкнулся, нашел решение дивом закрывать все это дело типо так
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
Цитата:
Делаем запрос в БД, по новой создаем страницу и т.д
Не удачный(ошибка)
такого вообще не должно быть - это неоттестированый проект с багами. Тут уж без разницы аякс или нет.
Цитата:
Очень глупо загружать целую библиотеку ради одной функции. Если уж решили ей воспользоваться, то пользоваться нужно по максиму
как по мне глупо использовать библиотеку потому что ты ее згрузил - типа чтобы добро не пропало. Тем более браузер яваскрипты кеширует. Или используй функцию без библиотеки. Один аякс запрос можно написать и руками без всяких jquery.
Цитата:
Сложно да ни сколько. Есть много ресурсов и инфы.
Никто не говорит что сильно сложно. Я говорю что более трудоемко - много букаф. И на отладку больше времени.
Для себя поигратся можно - а когда жесткий тайлайм в проекте только камикадзе станет писать вместо отрабюотаной технологии аяксовкие прибамбасы если заказчик конкретно на это не соглдасился и не выделил время и деньги. (Добавление)
Цитата:
Все теперь при всех запросах ajax div показывается.
А кто уберет твой div если яваскрипт глюкнет (обычное дело) и событие не сработает
Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010
Помог: 69 раз(а)
caballero пишет:
такого вообще не должно быть - это неоттестированый проект с багами. Тут уж без разницы аякс или нет.
Т.е если в момент запроса упал сервер БД, еще что-то у Вас это ни как не проверяется???
Ага а логи ошибок пишут для чего интересно????
caballero пишет:
А кто уберет твой div если яваскрипт глюкнет (обычное дело) и событие не сработает
С чего он должен глюкнуть-то. Потому что кто-то плохо написал.
P.S В настройках $.ajax есть параметр timeout(по моему так), он за это отвечает.
Крайний вариант F5
caballero
Отправлено: 11 Декабря, 2011 - 15:14:59
Активный участник
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
Цитата:
Т.е если в момент запроса упал сервер БД, еще что-то у Вас это ни как не проверяется???
Но нормальном хостинге это редкость. Кроме того если упал сервер проверять что либо уже быссмысленно и в большинстве случаев уже нечем.
Цитата:
С чего он должен глюкнуть-то. Потому что кто-то плохо написал.
Потому что ктото плохо написал ява скриптовый движок или браузер. Ява скриптовые ошибки или зависания - обычное дело.
Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010
Помог: 69 раз(а)
caballero пишет:
Но нормальном хостинге это редкость. Кроме того если упал сервер проверять что либо уже быссмысленно и в большинстве случаев уже нечем.
Раз в год и палка стреляет. А если упала БД, а не сервер, что тогда будет? User будет что делать???
caballero пишет:
Потому что кто-то плохо написал ява скриптовый движок или браузер. Ява скриптовые ошибки или зависания - обычное дело.
Для этого есть отладчики. Причем во всех браузерах, только с разным функционалом.
caballero
Отправлено: 11 Декабря, 2011 - 15:38:31
Активный участник
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Помог: 126 раз(а)
Цитата:
Раз в год и палка стреляет. А если упала БД, а не сервер, что тогда будет? User будет что делать???
А что аякс как то поможет поднять БД?
Цитата:
Для этого есть отладчики. Причем во всех браузерах, только с разным функционалом.
Разумеется только без аякса этот вопрос вообще отпадает. А значит время а и меньший риск просрочить проект а значит деньги. Я так понимаю в серьезном реальном проекте вы не участвовали что нуждаетесь в таких прописных истинах.
Понимаете в чем разница для админок и прочих ответственных страниц. Загрузка страницы целиком это как транзакция в БД. Либо загрузилась либо вывалилась ошибка. С асинхронкой юзер на странице может видеть одно (инфа то висит не перегружается) а на бакенде уже совсем другое. при обычной загрузке страницы - рассинхронизация данных невозможна.
Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010
Помог: 69 раз(а)
caballero пишет:
А что аякс как то поможет поднять БД?
Ему ничего поднять не надо ему надо вернуть результат запроса. Выполнился или нет.
caballero пишет:
Понимаете в чем разница для админок и прочих ответственных страниц. Загрузка страницы целиком это как транзакция в БД. Либо загрузилась либо вывалилась ошибка. С асинхронкой юзер на странице может видеть одно (инфа то висит не перегружается) а на бакенде уже совсем другое. при обычной загрузке страницы - рассинхронизация данных невозможна.
Тут все тоже самое. Я не знаю как вы это делаете, обычно если нужен рез-т ответа, а это как транзакция в БД. То делается callback функция, которая и проверяет ответ сервера, если он + то одно(типа сохранено и т.д) если - произошла ошибка
А чтобы user видел что программа что-то делает до получения ответа и вешается картинка типа обрабатываем рез-т. Пока она работает, он ничего не делает не сможет делать.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.