试试这些是否有效:
1)在IISNode中设置缓存:app.use(express.static(path.join(__dirname, 'public'), {maxAge: 86400000}));
2) 添加新的 IIS 规则以缓存来自 youriisnode.js 的所有响应
或者
3)
在 iisnode 中提供静态内容的最佳方式是配置 URL 重写模块,以便 IIS 静态文件处理程序处理对静态内容的请求,而不是 node.js。与使用任何 node.js 机制为这些文件提供服务相比,让 IIS 服务静态内容具有很大的性能优势,因为围绕缓存进行了内核级优化,并且不必中断 JavaScript 代码。
创建 web.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="iisnode" path="server.js" verb="*" modules="iisnode"/>
</handlers>
<rewrite>
<rules>
<rule name="LogFile" patternSyntax="ECMAScript" stopProcessing="true">
<match url="^[a-zA-Z0-9_\-]+\.js\.logs\/\d+\.txt$"/>
</rule>
<rule name="NodeInspector" patternSyntax="ECMAScript" stopProcessing="true">
<match url="^server.js\/debug[\/]?" />
</rule>
<rule name="StaticContent">
<action type="Rewrite" url="public{REQUEST_URI}"/>
</rule>
<rule name="DynamicContent">
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="True"/>
</conditions>
<action type="Rewrite" url="server.js"/>
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
它的作用如下:
对所有其他 URL 的请求(例如 /a/b/c?foo=12)现在将被发送到 server.js 应用程序,并将按照那里实现的逻辑进行处理。对于 Express 应用程序,将适用快速路线。
原文来源:https ://github.com/tjanczuk/iisnode/issues/160#issuecomment-5606547