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

12 3
Unlock
На сайте с 01.08.2004
Offline
782
3343

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

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

Подскажите, в какую сторону копать?

Есть желание, - тысяча способов; нет желания, - тысяча поводов! /Петр-I/.
gormarket
На сайте с 29.12.2010
Offline
47
#1

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

Один из вариантов (если используется сервер Apache), создание странички с таким сообщением и реврайт в .htaccess на эту страничку, если запрошена основная страница с пустой QUERY_STRING (отдавать не основную, а страницу-предупреждение).

А уже не странице-предупреждении ссылка на основную страницу с добавленным параметром, типа "http://основная_страница?load=1", который не позволит сработать реврайту в .htaccess и по этой ссылке загрузится основной контент.

У этого способа можно найти немало минусов, но как быстро подставляемый костыль вполне может подойти.

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

Переход может быть по закладке, из поисковика и т.п.

gormarket:
если используется сервер Apache

Увы, IIS.

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

T
На сайте с 13.04.2008
Offline
67
t3s
#3

вы бы пациента показали, что ли...

либо если это по какой-то причине невозможно, "на пальцах" пару слов про вывод индексной страницы

я к чему веду - возможно получится обойтись без всяких редиректов, например бекграунд для основного дива в виде анимированной гиф-ки "loading..." - чем не костыль?

зы

а вообще, генерация 2-3 минуты это нонсенс... тут не костыли нужны а кастрация разработчика

webamator (http://webamator.ru) приглашает потестить сервис бесплатной оптимизации CSS и JavaScript (http://service.webamator.ru/) Занимаюсь проектами любой сложности. Качественно. Дорого. Примеры некоторых работ (http://blog.webamator.ru/category/portfolio)
Unlock
На сайте с 01.08.2004
Offline
782
#4
t3s:
либо если это по какой-то причине невозможно, "на пальцах" пару слов про вывод индексной страницы

Даже и не знаю как объяснить. Пока программа не загрузится, страница не доступна. Как разделить загрузку страницы и загрузку программы, чтобы страница вообще грузилась, не знаю. Опять же, как проверять что программа готова?

t3s:
а вообще, генерация 2-3 минуты это нонсенс... тут не костыли нужны а кастрация разработчика

Вроде бы и согласен, а с другой стороны. Данных на 12 Гб, плюс видимо особенность работы IIS. Не знаю как можно грузить данные быстрее. Возможно когда произойдет переход на 64-х битную версию софта, это как-то изменит скорость загрузки данных. Впрочем это будет уже не важно. Сейчас софту просто ОЗУ не хватает, он упирается в предел который возможен для 32-х битного софта и все. Возможно память течет. Когда будет новая версия, загрузили один раз и пусть годами висит загруженный процесс, тут уже будет мгновенный доступ для работы.

D1
На сайте с 07.10.2008
Offline
44
#5

может просто дописать кэш? Делов вроде на пару минут если знать где что происходит в движке или в программе..

gormarket
На сайте с 29.12.2010
Offline
47
#6
Unlock:
Переход может быть по закладке, из поисковика и т.п.

Это не важно откуда переход, во всех этих переходах в строке запроса нет нужного параметра, значит можно отдавать страницу-предупреждение.

Unlock:
Увы, IIS.

Не приходилось иметь дел, не знаю что это.

Но наверно можно на самой странице как-то проверить наличие параметра в строке запроса и отдать либо основной контент, либо предупреждение.

Например, если возможна вставка PHP-блока в начале основной страницы (повторюсь, не знаком с IIS), можно сделать эту проверку и отдачу предупреждения на PHP (или другом доступном серверном языке).

T
На сайте с 13.04.2008
Offline
67
t3s
#7
Unlock:
Пока программа не загрузится, страница не доступна. Как разделить загрузку страницы и загрузку программы, чтобы страница вообще грузилась, не знаю.

ммм... не понял, у вас индекс генерируется десктопным софтом или как? что значит "программа"?

если так - то имхо не совсем правильно (разве что софтина суперспецифическая и ее функционал ввиде веб-приложения не повторить)

тем не менее "разделить" не сложно - пускай софтина с указанной периодичностью выгружает данные в любом удобном формате - XML, CSV, да хоть напрямую в мускул...

а сайт пусть берет эти данные в тот момент когда пользователь запрашивает страницу - поскольку они будут подготовлены, 2-3 минут уже не будет

это и есть грубый пример кеширования

Unlock:
Вроде бы и согласен, а с другой стороны. Данных на 12 Гб, плюс видимо особенность работы IIS.

да хоть на 128 гб... вы что, отдаете все данные сразу?!?! в этом случае повторюсь - сайт спасет исключительно кастрация старого разработчика... никакую лапшу про 32/64 бита не слушайте, иначе когда данных будет 24 гб он начнет петь про еще сколько-то там бит...

Unlock
На сайте с 01.08.2004
Offline
782
#8
t3s:
ммм... не понял, у вас индекс генерируется десктопным софтом или как? что значит "программа"?

Есть база данных в нестандартном формате. Т.е. это не MySQL или что-то из стандартного. Есть софт который делает поиск по этой базе. Данные хранящиеся в базе очень специфичны. Как все это работает именно со стороны софта не скажу, скажу лишь что dll весит 1,6 Гб, собственно видимо она и пожирает память.

t3s:
да хоть на 128 гб... вы что, отдаете все данные сразу?!?! в этом случае повторюсь - сайт спасет исключительно кастрация старого разработчика... никакую лапшу про 32/64 бита не слушайте, иначе когда данных будет 24 гб он начнет петь про еще сколько-то там бит

Вы не знаете специфики и поэтому несколько горячитесь. Очень редкая задача, во всем мире существует по сути 2-3 решения, с ценой за десятки килоевро. Причем это фактически ежегодная плата, а не разовая. Тут более бюджетный вариант, но вот с такими прибамбахами. Да, там есть некоторые идеологически не корректный моменты, советовался со знакомым специалистом, как раз по большим базам данных. Но никто не возьмется за исправление проблем в текущем софте, а с нуля написать очень мало кто может, для этого надо быть очень хорошим химиком.

Поэтому что имеем, то нас и имеет. :)

T
На сайте с 13.04.2008
Offline
67
t3s
#9

я вовсе не горячусь ))

и если стоит задача просто удержать посетителя в течение этих самых трех минут - отвечал выше, первое что приходит в голову это преаплодер ввиде дива с гифкой-бекграундом и надписью "подождите"

а специфики сайта конечно же не знаю, именно поэтому спросил урл - очень сложно что-то подсказать "наугад"

bsyomov
На сайте с 25.01.2012
Offline
31
#10
Unlock:
Есть база данных в нестандартном формате. Т.е. это не MySQL или что-то из стандартного. Есть софт который делает поиск по этой базе. Данные хранящиеся в базе очень специфичны. Как все это работает именно со стороны софта не скажу, скажу лишь что dll весит 1,6 Гб, собственно видимо она и пожирает память.


Вы не знаете специфики и поэтому несколько горячитесь. Очень редкая задача, во всем мире существует по сути 2-3 решения, с ценой за десятки килоевро. Причем это фактически ежегодная плата, а не разовая. Тут более бюджетный вариант, но вот с такими прибамбахами. Да, там есть некоторые идеологически не корректный моменты, советовался со знакомым специалистом, как раз по большим базам данных. Но никто не возьмется за исправление проблем в текущем софте, а с нуля написать очень мало кто может, для этого надо быть очень хорошим химиком.
Поэтому что имеем, то нас и имеет. :)

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

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

12 3

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