IIS能否在页面仍在加载时提供增量内容?

IIS能否在页面仍在加载时提供增量内容?,iis,iis-7,Iis,Iis 7,我是一名web开发人员,经常在Apache和IIS托管的项目之间切换。多年来,我注意到这两种环境之间有一个明显的区别 在Apache中,如果我知道加载页面需要一段时间,我可以对输出进行优先级排序,以便屏幕的某些部分首先显示。相反,IIS会等到整个页面加载完毕后才显示其任何部分 示例: <?php echo "Hello "; sleep(5); echo "world."; ?> C:\Windows\SysWOW64\inetsrv>appcmd.exe set confi

我是一名web开发人员,经常在Apache和IIS托管的项目之间切换。多年来,我注意到这两种环境之间有一个明显的区别

在Apache中,如果我知道加载页面需要一段时间,我可以对输出进行优先级排序,以便屏幕的某些部分首先显示。相反,IIS会等到整个页面加载完毕后才显示其任何部分

示例:

<?php
echo "Hello ";
sleep(5);
echo "world.";
?>
C:\Windows\SysWOW64\inetsrv>appcmd.exe set config /section:handlers "/[name='PHP_via_FastCGI'].ResponseBufferLimit:0"

在Apache中,上面的代码将显示“Hello”,5秒钟后将“world.”附加到其中。在IIS中-至少在默认设置下-浏览器将等待5秒钟,然后立即显示“Hello world.”

有人知道为什么会这样吗?更重要的是,如果对服务器具有完全的管理员访问权限,是否有办法强制IIS在加载时提供增量内容

到目前为止尝试过的事情:

<?php
echo "Hello ";
sleep(5);
echo "world.";
?>
C:\Windows\SysWOW64\inetsrv>appcmd.exe set config /section:handlers "/[name='PHP_via_FastCGI'].ResponseBufferLimit:0"
  • php.ini-输出缓冲=关闭
  • php.ini-隐式\u flush=On
  • php.ini-zlib.output\u compression=Off
  • IIS输出缓存-.php=阻止所有缓存/阻止所有缓存

FastCGI——在IIS中运行PHP的最常见方式——默认情况下配置为在将数据刷新到浏览器之前缓冲一定量的数据;所以我们需要禁用这个缓冲区,或者将
responseBufferLimit
设置为0

不幸的是,Microsoft没有在
FastCGI设置中公开此选项,因此我们必须在名为
applicationHost.config
的文件中直接更改它。您可以在服务器硬盘上搜索此文件,或签入
C:\Windows\System32\inetsrv\config\applicationHost.config


在文本编辑器中打开此文件并搜索以
开头的部分依赖于此类服务器端行为是一种老生常谈的做法,这也依赖于浏览器,如中所示。请考虑诸如Ajax这样的现代方法,以便浏览器端代码在对后端进行操作时主动修改DOM。在大多数情况下,我同意,但并非所有情况都有助于更新/重写整个应用程序。有时预算不多,但客户机仍然希望旧代码正常工作,这是有道理的。