Caching 使用IISNode的客户端缓存

Caching 使用IISNode的客户端缓存,caching,iis,client-side,iisnode,iis-8.5,Caching,Iis,Client Side,Iisnode,Iis 8.5,我正在IIS 8.5上运行IISNode,无法启用静态文件的客户端缓存。 使用IISNode在不接触节点的情况下提供文件。当使用IISNode提供文件时,它们包含缓存控制:no Cache头 如果我只托管节点并绕过IIS和IISNode,我会得到头的缓存控制:public,max age=604800 IIS或IISNode正在设置缓存控制值。我似乎无法在IIS中更改它,因为当我这样做时,我得到了缓存控制:无缓存,公共,最大年龄=604800 如何防止将无缓存添加到缓存控制标头?如果其中任何一项

我正在IIS 8.5上运行IISNode,无法启用静态文件的客户端缓存。 使用IISNode在不接触节点的情况下提供文件。当使用IISNode提供文件时,它们包含
缓存控制:no Cache

如果我只托管节点并绕过IIS和IISNode,我会得到头的
缓存控制:public,max age=604800

IIS或IISNode正在设置缓存控制值。我似乎无法在IIS中更改它,因为当我这样做时,我得到了
缓存控制:无缓存,公共,最大年龄=604800


如何防止将无缓存添加到缓存控制标头?

如果其中任何一项有效,请尝试:

1) 在IISNode中设置缓存:
app.use(express.static(path.join(uu dirname,'public'),{maxAge:86400000}))

2) 添加新的IIS规则以缓存youriisnode.js中的所有响应

(三)

在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>


目前正在执行2和3。无法执行1,因为IISNode处理静态内容的请求,节点本身从未看到该请求。通过web.config执行2。如前所述,3已经就位,这样节点就不会处理静态文件请求。2将
public,max age=604800
添加到缓存控制头中,但不会从中删除
no cache