我有一个IIS6的ISAPI过滤器,我一直在开发,但我只注意到一些令人不安的东西。任何时候我安装了过滤器并且我下载了一个文件,文件下载变得非常慢。从远程机器上,我没有安装过滤器,每秒约120kb,安装过滤器时约为每秒45kb。当ISAPI筛选器实现SF_NOTIFY_SEND_RAW_DATA时,什么会导致吞吐量变得非常慢?
这似乎与SF_NOTIFY_SEND_RAW_DATA
回调有关。每当我注册这个回调函数,我都会得到缓慢的下载,当我没有注册时,一切都很好。
即使我让我的HttpFilterProc
功能只是立即返回,就像这样:
DWORD WINAPI HttpFilterProc(PHTTP_FILTER_CONTEXT pfc,
DWORD notificationType,
LPVOID pvNotification)
{
return SF_STATUS_REQ_NEXT_NOTIFICATION;
}
我也尝试返回SF_STATUS_REQ_HANDLED_NOTIFICATION
具有相同的结果。
是否有可能我的DLL上有一些构建设置导致回调函数的执行速度缓慢,或者这只是它与ISAPI的方式?
我不认为不能使用VectorSend/TransmitFile,必须在用户模式下打开文件才能解释我在这里获得的性能。我们应该能够一次读取和发送1个字节,并且仍然能够保持每秒120kb的速率。 – Gerald 2010-01-27 20:59:53