我有一个IIS6的ISAPI过滤器,我已经开发了一段时间,但我只是注意到一些令人不安的事情。每当我安装过滤器并下载文件时,文件下载变得非常慢。从一台远程机器我没有安装过滤器,每秒约120kb,安装了过滤器,每秒约45kb。
这似乎与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一样?
答案 0 :(得分:0)
它与IIS的内部以及它如何实现数据发送有关。这篇Microsoft博客文章:http://blogs.msdn.com/david.wang/archive/2005/12/14/How-IIS6-Compression-Schemes-interact-with-ISAPI-Filters.aspx提示将数据从内核移动到用户空间以及无法使用VectorSend。我不完全明白这个人说的是什么,但外卖似乎是“如果你能帮助它,请避免使用SF_NOTIFY_SEND_RAW_DATA”。