我们在公司中使用 IIS7 和 dotnet 3.5 来构建我们内部和外部客户使用的不同 Web 应用程序。建议我们开始使用静态内容缓存来缓存图像和 html 文件。
我的理解是,在 web.config 文件中,我们可以设置 cachecontrolmaxage 来指定需要缓存文件的天数。
此外,还建议我们通过传递参数 myjsfile.js?verfile=1234 来调用这些静态页面,只要新版本的文件投入生产,就可以更改该参数。

我希望我去上面对吗?现在我正在寻找的是实现第二部分的更好方法,而不是每次创建新文件时都必须传递新版本号,我们可以以其他方式部署它,以便对静态文件进行任何新更改在生产环境中。我想我正在寻找的是一种在生产中提升多个图像和静态文件而无需担心更改版本号的简单方法。

最佳答案

由于 IIS7,所有 IIS 配置都可以通过 web.config 文件应用,更具体地说是 system.webServer section 。在这种情况下,您应该检查 Caching Section 并创建一个 custom profile(确保将变化的查询字符串属性设置为 true 以使“?version=xxx”工作)。

进入部署问题,必须更改 url,因为客户端不会在缓存有效时检查文件的新版本(并且您说您可能希望将天数设置为缓存持续时间)。一种常见的模式是根据修改日期自动生成 url,例如,如果您的原始行是:
<script src='functions.js' />
您可以将其更改为:
<script src='<%=GetFilenameWithModificationDate("functions.js")%>' />
该函数应该获取文件修改日期时间并将其附加到文件中,因此如果文件最后修改时间为 2010-01-01 时间 10:12:34,它应该生成如下内容:
<script src='functions.js?version=20100101101234' />
这样,每当您修改文件时,都会包含一个新的查询字符串并更新缓存。

由于您正在缓存静态文件文件,我假设性能是一个考虑因素,因此您应该考虑检查每个文件的修改日期的惩罚,并且您可能希望在辅助函数、控件或任何机制中使用缓存决定使用。

HTH

关于.net - 静态内容缓存,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3137932/

10-12 00:01
查看更多