Долгая загрузка страницы, как сделать preload?

123
Unlock
На сайте с 01.08.2004
Offline
776
#11
t3s:
а специфики сайта конечно же не знаю, именно поэтому спросил урл - очень сложно что-то подсказать "наугад"

Вам урл ну абсолютно ничего не даст, совсем ничего. Что Вам даст html код? :)

---------- Добавлено 08.04.2012 в 22:39 ----------

bsyomov:
Насколько велика сама БД? Насколько часто повторяются запросы? Насколко часто меняются данные в БД? Возможно кеширование ответов сильно спасёт ситуацию?

Не спасет. Не уверен, что в принципе это можно сделать. Там проблема не в запросе, а загрузке данных. Да и запросов там миллион возможных может быть. Реально не предугадаешь.

bsyomov:
Второй вариант, делать загрузку ответа ajax запросом после загрузки страницы, и показывать анимацию в стели "ваш запрос обрабатывается - ждите".

Страница не доступна, ни байта ее не доступно. Вот представьте, что Вы переходите на страницу, но ее загрузка не идет, т.е. Вы просто ждете 2 минуты, но страница не грузится вообще. Т.е. Вы сидите на странице откуда переход делаете и ее код в броузере видно.

Есть желание, - тысяча способов; нет желания, - тысяча поводов! /Петр-I/.
bsyomov
На сайте с 25.01.2012
Offline
31
#12
Не спасет. Не уверен, что в принципе это можно сделать. Там проблема не в запросе, а загрузке данных. Да и запросов там миллион возможных может быть. Реально не предугадаешь.

С кешированием и не надо предугадывать. Есть в кеше, отдаётся из кеша, нет - запрашивается и кладётся в кеш, а ключём является запрос. Если запрос такой был - страница будет отдаваться куда быстрее из кеша. Если запросов много, просто кеш будет большим, и попадания будут особенно первое время не часто. А вот если в базе часто меняются данные, эта схема работать будет плохо, точнее в ней не будет особого смысла.

Страница не доступна, ни байта ее не доступно. Вот представьте, что Вы переходите на страницу, но ее загрузка не идет, т.е. Вы просто ждете 2 минуты, но страница не грузится вообще. Т.е. Вы сидите на странице откуда переход делаете и ее код в броузере видно.

Это так у вас сейчас. А надо сделать как раз чтобы страница грузилась безо всяких запросов к базе, а потом, после её загрузки уже запускался AJAX запрос, который и запрашивал данные из базы. И потом выдавал бы их в нужный элемент страницы. Это намного удобнее и понятнее для пользователя.

DiAksID
На сайте с 02.08.2008
Offline
236
#13

присоединяюсь к предыдущим ораторам:

- загрузку из БД делать аяксом только для тех блоков (записей) у которых офсет от верха на данный момент не больше высоты экрана (т.е. только для тех, которые в пределах просмотра). у блоков в каком-н атрибуте типа "data-ajax" пишем либо ID записи БД либо 0, если аякс на нём уже отработал и загружать не надо;

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

не так давно лазал по плагинам jQuery видел подобное: страница из многих сотен картинок, новые изображения грузятся только при скроллинге - задачка по большому счёту 1 в 1. названия не помню, да оно и не нужно - тут быстрее своё наваять, чем чужое нагуглить..

show must go on !!!...
Unlock
На сайте с 01.08.2004
Offline
776
#14
bsyomov:
Если запрос такой был - страница будет отдаваться куда быстрее из кеша.

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

DiAksID, тоже самое. Проблема не в выводе результатов.

Сформулирую иначе вопрос. Можно ли определять, что страница пока не доступна и проверять загрузилась ли она и пока нет, выдавать определенно сообщение пользователю. Т.е. сделать все ссылки на страницу через какую-то промежуточную, которая будет мониторить загрузку целевой страницы и до тех пор, пока та не загрузится, выдавать сообщение. Как только страница загружена, то происходит редирект. Как-то так мне это видится. Но как такое сделать, не понимаю.

gormarket
На сайте с 29.12.2010
Offline
47
#15

Unlock, так у Вас проблема не со скоростью загрузки страницы, а с тем, что используется , как я бы его назвал, "отложенный" запуск софта.

Он начинает окончательно запускаться (и достаточно долго) не при его реальном запуске, а при первом обращении к нему.

Но ведь кто-то или что-то запускает софт, вот на него и повесьте первое обращение к странице, а не на реального посетителя.

Товары и цены в магазинах Вашего города: Городской рынок (http://gormarket.ru/)
Unlock
На сайте с 01.08.2004
Offline
776
#16
gormarket:
вот на него и повесьте первое обращение к странице, а не на реального посетителя

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

TO
На сайте с 21.09.2007
Offline
170
#17
Unlock:
Но пока нет гарантий, что одного перезапуска софта в сутки будет достаточно, чтобы он не подвисал.

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

gormarket
На сайте с 29.12.2010
Offline
47
#18
Unlock:
Можно ли определять, что страница пока не доступна и проверять загрузилась ли она и пока нет, выдавать определенно сообщение пользователю. Т.е. сделать все ссылки на страницу через какую-то промежуточную, которая будет мониторить загрузку целевой страницы и до тех пор, пока та не загрузится, выдавать сообщение. Как только страница загружена, то происходит редирект. Как-то так мне это видится. Но как такое сделать, не понимаю.

Unlock, Вы уже почти ответили на свой вопрос

Unlock:
Вот представьте, что Вы переходите на страницу, но ее загрузка не идет, т.е. Вы просто ждете 2 минуты, но страница не грузится вообще. Т.е. Вы сидите на странице откуда переход делаете и ее код в броузере видно.

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

А содержимое страницы очень простое, текст с предупреждением, может еще гифка анимированная, чтоб создавалось впечатление что процесс идет и скрипт редиректа:

<script type="text/javascript">

<!-- hide

document.location = "http://ваша_основная_страница?параметр"

// -->

</script>

И посетитель будет смотреть на предупреждение ровно столько, сколько потребуется на получение основного содежимого.

А уж как отдать посетителю загрузочную страницу вместо основной, если в запросе нет параметра, сами решите.

Unlock
На сайте с 01.08.2004
Offline
776
#19

t_o_x_a, а если в этот момент посетитель будет работать с результатами поиска и тем более с корзиной? Он же данные потеряет. Сейчас перезапуск раз в сутки, в том время когда шанс работы пользователя с каталогом сведен к минимуму. Но такое время выбрать сложно, т.к. днем Европа, ночью США, ранним утром Австралия и Япония.

---------- Добавлено 09.04.2012 в 11:55 ----------

gormarket, спасибо, попробую.

D
На сайте с 28.06.2008
Offline
1104
#20

Подгружайте нужные данные аяксом с красивой иконкой - типа идет загрузка

123

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий