문제

캐시되지 않은 경우 SQL에서 페이지를 생성하는 ASP.NET 웹 페이지를 만들고 있습니다. 로딩 시간은 300ms에서 1.5 초 사이 일 수 있습니다 (데이터베이스를 수정하지 않음).

나는 개인적 으로이 값들이 너무 길다는 것을 알았고, 그가 방문하는 페이지가로드하는 데 약간의 시간이 필요하다는 것을 사용자에게 알릴 수있는 솔루션을 찾고있었습니다.

가능하다면 page_load 함수를 통해 될 수있는 솔루션을 찾고있었습니다. 이 경우 나에게 완벽한 솔루션은 사용자에게 애니메이션 GIF 또는 페이지가 생성되고 있다는 텍스트를 보여줍니다.

참고로 나는 대부분 Windows 애플리케이션을 프로그래밍 한 것입니다.

도움이 되었습니까?

해결책

다음은 응답 객체를 사용하여 콘텐츠를 브라우저로 플러시하고 계속 처리하는 방법의 예입니다.

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>");
    }
}

다른 팁

페이지 렌더링을 시작하고 버퍼 호출 응답을 플러시 할 수 있습니다 .flush (). 버퍼의 내용을 브라우저로 보냅니다. 그런 다음 그래픽이로드되면 그래픽을 끄야합니다.

또 다른 옵션은 Ajax를 사용하여 이미지를로드하여 이미지없이 전체 페이지를로드 한 다음 다른 요청을 입력하여 이미지를 가져 오는 것입니다. 이렇게하면 부분 페이지를 렌더링하려고 시도 할 수 있습니다.

1.5 초는 페이지가 시간과 노력의 가치가 있는지 확인하는 데 나쁘지 않습니까?

먼저로드 그래픽을 출력 한 다음 출력 버퍼를 플러시하여 지금까지의 콘텐츠를 사용하여 사용자의 브라우저로 전송됩니다. Response.Flush().

나머지 콘텐츠를 출력하면 전송 된 첫 페이지 요소를 제거하려면 약간의 JavaScript가 있어야합니다.로드 그래픽이 사라집니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top