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

1 23
DiAksID
На сайте с 02.08.2008
Offline
236
#21

Unlock, "правильно сормулированный вопрос - половина ответа" ;) как я понял на данный момент вам нужно:

есть блок/окошко с фиксрованной позицией и кнопкой "подготовка определённой страницы". юзверь жмёт на кнопку, в блоке появляется сабж "загружаю" (в виде сообщения или иконки лоадера). пока страница загружается/готовится - юзверь продолжает работать на сайте, а окошко загрузки ползает за ним по экрану. как только всё ок - окошко сигналит ему каким-н телодвижением и выдёт уже нормальную ссылку на переход.

"типо так" ?

show must go on !!!...
Unlock
На сайте с 01.08.2004
Offline
785
#22
gormarket:
<script type="text/javascript">
<!-- hide
document.location = "http://ваша_основная_страница?параметр"
// -->
</script>

Вот это то, что было нужно. :)

Еще один вопрос. Есть форма поиска, на каждой странице сайта. Вот как бы сделать редирект запросов из нее, на такую промежуточную страницу, чтобы это все еще работало?

Такой вид редиректа не прокатывает в этом случае. Я подозревал об этом, но на всякий случай попробовал сделать и получил:

405 - HTTP verb used to access this page is not allowed.
The page you are looking for cannot be displayed because an invalid method (HTTP verb) was used to attempt access.



---------- Добавлено 09.04.2012 в 19:08 ----------

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

Кстати, а такой редирект не заддосит сервер? :) Это же повторяющиеся обращение к странице.

---------- Добавлено 09.04.2012 в 19:50 ----------

И еще вопрос. Как в Windows 2008 сделать обращение к определенной страницы сайта в определенное время. Что-нибудь без WGET.

P.S. Нашел вот такой вариант, vbs скрипт который в шедуллер:

Call LogEntry()


Sub LogEntry()

On Error Resume Next

Dim objRequest
Dim URL

Set objRequest = CreateObject("Microsoft.XMLHTTP")
URL = "http://www.your_website.com/filename.aspx"

objRequest.open "POST", URL , false

objRequest.Send

Set objRequest = Nothing

End Sub

Нет тут подвоха?

Есть желание, - тысяча способов; нет желания, - тысяча поводов! /Петр-I/.
gormarket
На сайте с 29.12.2010
Offline
47
#23
Unlock:
Кстати, а такой редирект не заддосит сервер? Это же повторяющиеся обращение к странице.

Это не повторяющиеся обращения, а единственная переадресация.

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

Кстати из формы запрос скорей всего идет не методом GET, а может быть методом POST (а у Вас может даже и "HTTP verb") и его протранслировать через промежуточную страницу такой простой переадресацией не получится.

А Вот при отдаче промежуточной страницы проверить, чтоб она отдавалась только при запросе страницы методом GET может и следует, иначе можно заблокировать работу формы.

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

Бррр. Я просто конечный урл поставил и все работает как надо.

gormarket:
может быть методом POST

Да, именно.

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

А есть ли другой вариант? Просто я почти все костыли поставил, все вроде бы неплохо выглядит. Вот только с поисковой формой осталась проблема.

gormarket
На сайте с 29.12.2010
Offline
47
#25
Unlock:
Просто я почти все костыли поставил, все вроде бы неплохо выглядит. Вот только с поисковой формой осталась проблема.

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

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

Единственное, что можно изобрести в этом случае, это при невозможности ответить на POST-запрос делать перенаправление пользователя на загрузочную страницу.

Но здесь придется повозиться с программированием и на стороне сервера, и на стороне клиента.

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

А саму форму (может быть) переделать так, чтоб она могла принимать не только стандартный ответ, но и выполнить присланный вместо ответа скрипт.

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

Unlock
На сайте с 01.08.2004
Offline
785
#26
gormarket:
если поисковая форма уже есть у пользователя, то значит страницу он уже загрузил, т.е. софт работает.

Это не так. Это просто форма. Она не зависит от софта. В смысле загрузка страницы.

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

gormarket
На сайте с 29.12.2010
Offline
47
#27
Unlock:
Есть ли какой-то не сложный вариант передать post запрос через промежуточную страницу, с редиректом типа того, что Вы дали страницей раньше.

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

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

Или этот обработчик сгенерит страницу не с формой, а со скриптом, который отправит при попадании к клиенту правильный POST-запрос например с помощью jQuery (опять же на основании анализа присланных POST-переменных).

И вот тогда можно вызывать при POST-запросах этот обработчик аналогично вызову странички с одной строчкой скрипта при GET-запросах.

Unlock
На сайте с 01.08.2004
Offline
785
#28

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

1 23

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