<%@ 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,但这也不会改变这种行为。
进一步澄清,我已经与fiddler进行了一项测试,以比较两台服务器。第一个服务器是局域网上的本地服务器,第二个是公共服务器。 fiddler发现两者之间没有明显的区别,主机名除外。在页面加载完成之前,局域网服务器没有写出响应,公共服务器在响应时写入了响应。我也可以确认这种行为发生在firefox和ie。
答案 0 :(得分:4)
答案 1 :(得分:1)
当你访问公共网站时,我把2美分放在上面,你正在通过网络代理运行,这就是内容被缓存的地方。
答案 2 :(得分: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