Как отключить Response.Buffer - PullRequest
       7

Как отключить Response.Buffer

1 голос
/ 23 декабря 2008

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

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
    void page_load(object o, EventArgs e)
    {
        Response.Write(new string(' ', 255));
        Response.Flush();
        for (int i = 0; i < 10; i++)
        {
            Response.Write(i + "<BR>");
            Response.Flush();
            System.Threading.Thread.Sleep(500);
        }

    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        main div
    </div>
    </form>
</body>
</html>

когда я проверяю это локально (vista x64, cassini), я получаю желаемый результат .. 1, затем 2, затем 3 и т. Д. Все отправляются в буфер без буферизации когда я пытаюсь сделать это на сервере dev (2003, iis6), он просто буферизирует все и отправляет все сразу. Есть ли что-то очевидное, что я пропускаю? Я также попытался поместить buffer = false вверху, но это также не меняет это поведение.

Чтобы уточнить, я провел тест с Fiddler, чтобы сравнить два сервера. первый сервер - это локальный сервер в локальной сети, второй - публичный сервер. Fiddler не обнаружил заметной разницы между ними, кроме имени хоста. сервер ЛВС не записывал ответ до тех пор, пока страница не закончила загружаться, общедоступный сервер записал ответ, как это произошло. Я также могу подтвердить, что такое поведение происходит как в Firefox и т. е.

Ответы [ 3 ]

4 голосов
/ 23 декабря 2008

Попробуйте это в Page_Load:

Response.BufferOutput = false;

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

1 голос
/ 31 октября 2011

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

0 голосов
/ 14 октября 2009

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

Public Sub KillCache()
    Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache)
    Response.Cache.SetExpires(New Date(1900, 1, 1))
    Response.Cache.SetMaxAge(New TimeSpan(0, 0, 5))   '// 5 SECONDS'
    Response.Cache.SetNoServerCaching()
    Response.Cache.SetNoStore()
    Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches)
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...