Изображение загрузки страницы

Я создаю веб-страницу ASP.NET, которая генерирует страницы из SQL, когда они не кэшируются. Их время загрузки может составлять от 300 мс до 1,5 секунд (пожалуйста, не исправляйте ответы базы данных).

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

Я искал решение, которое могло бы быть через функцию Page_Load, если это возможно. Идеальное решение для меня в этом случае — показать пользователю либо анимированный GIF, либо текст, говорящий о том, что страница создается.

Кстати, я занимаюсь программированием в основном приложений для Windows.


person EKS    schedule 06.03.2009    source источник


Ответы (3)


Вот пример того, как использовать объект Response для сброса содержимого в браузер и продолжения обработки:

using System;
using System.Web.UI;
using System.Threading;

public partial class _Default : Page
{
    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);

        Response.Write("<h1>please wait...</h1>");
        Response.Flush();

        // simulate load time
        Thread.Sleep(2000);

        Response.Write("<h1>finished</h1>");
    }
}
person Andrew Hare    schedule 06.03.2009

Вы можете начать рендеринг страницы и очистить буфер, вызвав Response.Flush(). Который отправит содержимое буфера в браузер. Затем вам нужно будет отключить графику после ее загрузки.

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

1,5 секунды — это неплохо для загрузки страницы. Вы уверены, что это стоит вашего времени и усилий?

person JoshBerke    schedule 06.03.2009

Вы захотите сначала вывести загрузочную графику, а затем очистить выходной буфер, чтобы содержимое на данный момент было отправлено в браузер пользователя с помощью Response.Flush().

Когда вы выводите остальную часть контента, вам понадобится немного javascript, чтобы удалить первые отправленные элементы страницы, чтобы исчезла загрузочная графика.

person OverloadUT    schedule 06.03.2009