.net 静态内容缓存
我们在公司使用IIS7和dotnet 3.5构建内部和外部客户使用的不同web应用程序。建议我们开始使用静态内容缓存来缓存图像和html文件。 我的理解是,在web.config文件中,我们可以设置cachecontrolmaxage以指定需要缓存文件的天数。 此外,建议我们通过传递一个参数(比如myjsfile.js?verfile=1234)来调用这些静态页面,该参数可以在新版本的文件投入生产时更改.net 静态内容缓存,.net,.net-3.5,iis-7,.net,.net 3.5,Iis 7,我们在公司使用IIS7和dotnet 3.5构建内部和外部客户使用的不同web应用程序。建议我们开始使用静态内容缓存来缓存图像和html文件。 我的理解是,在web.config文件中,我们可以设置cachecontrolmaxage以指定需要缓存文件的天数。 此外,建议我们通过传递一个参数(比如myjsfile.js?verfile=1234)来调用这些静态页面,该参数可以在新版本的文件投入生产时更改 我希望我去上面的权利?现在,我所寻找的是实现第二部分的更好方法,而不是每次创建新文件时都必须
我希望我去上面的权利?现在,我所寻找的是实现第二部分的更好方法,而不是每次创建新文件时都必须传递新的版本号,我们可以以其他方式部署它,以便在生产环境中对静态文件进行任何新的更改。我想我正在寻找的是一种简单的方法,可以在生产中升级多个图像和静态文件,而不用担心更改版本号。是的,关于在版本中使用查询字符串的部分是正确的,并且可以工作。但是,我不确定更改web.config中的设置是否会实际应用于静态内容。静态内容的缓存在IIS上由IIS管理员根据我工作的开发人员的建议进行管理 目前,我在一个地方管理版本号,并且可以通过应用程序的管理UI进行控制。缺点是,一旦版本号更改,整个应用程序的所有静态文件的版本号都会更改 或者,每个静态文件都使用版本作为文件名的一部分进行命名,因此一旦部署了内容,就不需要更改任何内容。但是,这也意味着引用静态内容的代码也需要使用完整的文件名来引用它们,并且在静态内容发生更改时需要进行更改
希望有帮助。请记住,IIS只会为映射到asp.NET ISAPI的文件调用.NET运行时。因此,任何web.config设置都不会影响.html、.jpg等静态内容。您可以映射它们,但这样会降低性能。可能不是最好的路线 对于脚本代码,我通常使用像上面提到的airmanx这样的系统。.config中的全局设置,附加到URL,并在有新版本时更新。你可以通过抓取应用程序的构建并将其传入来实现自动化
静态内容,您可以考虑从不同的域(例如,内容.NET.COM)服务所有内容,并管理IIS中的标头用于缓存、内容过期等。这是一个非常简单的解决方案,不需要太多开销,但如果您需要过期内容,则必须让您的OPS人员参与。这不是一个完全自动化的解决方案,但我发现它在我工作过的大多数大型网站上都非常有效。
因为IIS7所有IIS配置都可以通过web.config文件应用,更具体地说是。在这种情况下,您应该检查并创建一个(确保将varyByQueryString属性设置为true以使“?version=xxx”工作) 进入部署问题,url必须更改,因为在缓存有效时,客户端不会检查文件的新版本(并且您说您可能希望将天设置为缓存持续时间)。一种常见模式是基于修改日期自动生成url,例如,如果原始行为:
您可以将其更改为:
函数应获取文件修改日期时间并将其附加到文件中,因此,如果文件最后一次在10:12:34修改con 2010-01-01,则应生成如下内容:
这样,无论何时修改文件,都会包含一个新的查询字符串并更新缓存
因为您正在缓存静态文件文件,所以我假设性能是一个考虑因素,因此您应该考虑检查每个文件的修改日期的惩罚,并且您可能希望在助手函数、控件或您决定使用的任何机制中使用缓存。 嗯