- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
В 2023 году Google заблокировал более 170 млн фальшивых отзывов на Картах
Это на 45% больше, чем в 2022 году
Оксана Мамчуева
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Есть проект по недвижимости.
Пользователь задаёт параметры поиска объекта недвижимости, все эти параметры скидываются через AJAX скрипту. И на месте вывода результата крутится колёсико. Поиск может занимать достаточно продолжительное время от 2 до 7 секунд.
Хотелось бы, чтобы вместо колёсика отображался процент готовности обработки запроса.
Как такое учудить, подскажите?
Каким образом осуществляется поиск, что он так много времени занимает?
Надо оптимизировать запросы и поиск, а не маяться дурью. :)
Алексей Барыкин, не, ну всякое бывает )
Может у товарища скрипт опрашивает сотню баз разных агентств недвижимости.
Но с вами я тоже согласен )
Ну ищет предприниматель себе коровник, например. Вот и извращается. У коровника между прочим более 30 всяких параметров :), а таких предпринимателей куча и объектов почти 5000.
Когда параметров мало - быстренько, а когда много, там еще и расчёты всякие нужно вести. Сумма затрат на содержание, в зависимости от еще 5 параметров.
Плюс там еще идет расчёт налоговой ставки, в зависимости от региона, различные коэф. понижения, повышения и т.д.
Пока есть возможность только кэш использовать. Запросы, как могли оптимизировали. Теперь ждём, пока московские программисты базу в нормальный вид приведут. А ждём уже с 12 января
Вы так и не ответили на мой вопрос.
Придется проявлять телепатические способности.
Если поиск осуществляется по одной базе данных, и объектов в ней всего 5000, то даже если поиск осуществляется по 30 критериями, он никак не должен занимать столько времени.
Если конечно по "расчетами" не подразумевается решение систем дифференциальных уравнений NN-го порядка :D
Т.е. нужно включать мозг, приводить в порядок базу и запросы.
Далее по существу.
Если поиск осуществляется оним запросом, то вашу задачу вы не решите. (Вы сможете отображать или 0% или 100%)
Если поиск осуществляется двумя запросами, то вы можете отображать 0% или 50% или 100%
И т.д.
Если ну очень надо в процентах, то можно вместо колесика показывать анимированный gif длительностью 7 секунд: 5%-8.5%-12.65% -и т.д до 99%. После ответа показать gif 100%.
Ну, скорее уж просто сделать колесико, мол "запрос обрабатывается, подождите пожалуйста несколько секунд". А % пытаться приделать - не выйдет, т.к. Вы не знаете сколько конкретно времени необходимо на данный запрос.
Теоретически с помощью одного xmlhttprequest-запроса это невозможно, так как он отдает только четыре состояния.
Запрос xmlhttp регулярно отчитывается о своем состоянии через вызов функции xmlhttp.onreadystatechange. Состояние под номером 4 означает конец выполнения, поэтому функция-обработчик при каждом вызове проверяет - не настало ли это состояние.
Вообще, список состояний readyState такой:
0 - Unitialized
1 - Loading
2 - Loaded
3 - Interactive
4 - Complete
Состояния 0-2 вообще не используются.
Вызов функции с состоянием Interactive в теории должен происходить каждый раз при получении очередной порции данных от сервера. Это могло бы быть удобным для обработки ответа по частям, но Internet Explorer не дает доступа к уже полученной части ответа.
Firefox дает такой доступ, но для обработки запроса по частям состояние Interactive все равно неудобно из-за сложностей обнаружения ошибок соединения. Поэтому Interactive тоже не используется.
После того, как javascript-функция запущена, можно просто вешать гифку и ждать, пока состояние станет 4.
Либо можно пойти более серьезным способом и все-таки сделать то, что вы хотите. Но здесь придется изобрести велосипед. При посылке запроса можно параллельно запустит другую функцию с setInterval, в котором запускать, например, каждые полсекунды другой аджакс-запрос. На сервере же сделать еще один файл, в который во время работы основного файла будет записываться количество процентов на данный момент (тоже каждые полсекунды, например), и, пока идет запрос, кушать много раз в сетИнтервале этот файл. Как только первая функция получает искомый ответ, просто выключаете интервал и убираете в display:none счетчик.