1

これはばかげているようです-明らかな何かが欠けているに違いありません。次のコードがあります(テストとして):

<%@ 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などはすべてバッファなしでブラウザに送信されます。開発サーバー(2003、iis6)でこれを試すと、すべてがバッファリングされ、一度に送信されます。私が行方不明になっている明らかなものがありますか?? また、上部に buffer=false を配置しようとしましたが、それでもこの動作は変わりません。

さらに明確にするために、フィドラーを使用してテストを行い、2 つのサーバーを比較しました。最初のサーバーは LAN 上のローカル サーバーで、2 番目のサーバーはパブリック サーバーです。フィドラーは、ホスト名を除いて、2 つの間に識別可能な違いを見つけませんでした。LAN サーバーは、ページの読み込みが完了するまで応答を書き出さず、公開サーバーは、発生したとおりに応答を書き込みました。この動作がFirefoxとIEの両方で発生することも確認できます。

4

3 に答える 3

4

Page_Loadでこれを試してください:

Response.BufferOutput = false;

また、 Fiddlerのコピーを取得し、HTTP 会話を監視して、ページがキャッシュされていないことを確認してください。

于 2008-12-23T05:33:34.297 に答える
1

公開サイトにアクセスすると、Web プロキシを介して実行され、そこにコンテンツがキャッシュされることに 2 セントを置きます。

于 2011-10-31T07:20:37.357 に答える
0

選択したページのキャッシュを破棄するようにブラウザーにプログラムで指示することもできます (ただし、実際に指示を尊重するかどうかはブラウザー次第です)。

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
于 2009-10-14T01:28:07.477 に答える