ASP.Net中的缓存破坏策略

7
什么是在ASP.Net网站上自动应用和/或更新缓存破坏变量的良好策略?
例如:将代码转换为以下形式:
<script type="text/javascript" src="/js/myScript.js" />

to

<script type="text/javascript" src="/js/myScript.js?rev=12345" />

更新:不需要持续集成。 我正在使用持续集成(具体来说是Jenkins),所以如果更新变量的方法基于构建编号,那就太好了。

虽然我可以手动应用源代码中的原始变量,并通过该策略进行更新,但如果该策略也可以应用原始变量(例如对于遗留代码而言)而不存在时,那将是一个很好的补充。

在我头脑中,我可以想象使用Powershell脚本扫描所有*.aspx和*.ascx文件,并使用正则表达式查找适当的引用并进行更新。但你知道他们怎么说的关于使用正则表达式...这样我就有两个问题:)

2个回答

4
你可能还想了解Cassette、RequestReduce和Bundler。 Cassette:自动排序、串联、压缩、缓存和版本化所有JavaScript,CoffeeScript,CSS,LESS,Sass和HTML模板。 RequestReduce:让您的网站更快 - 有时甚至更快 - 几乎不需要任何努力
- 从背景图像中自动生成精灵 - 优化Sprite PNG格式和压缩 - 压缩CSS和Javascript - 优化缓存标头和ETags - 在包括Classic ASP和PHP在内的任何IIS网站上运行 - 可以在多个Web服务器之间同步内容 - 与CDN配合使用效果良好 - 编译Less、Sass和Coffee脚本 Bundler:"编译、压缩、组合Less/Sass/Css/JS/CoffeeScript文件。轻松从MVC中使用"

3
使用各种CSS/JS缩小化库是ASP.Net中缓存破坏变量的答案。 我曾认为每次部署到服务器时都需要更新缓存破坏变量,但缩小化库基于单个CSS/JS文件的内容应用哈希标记。由于我正在开发一个.Net 3.5网站,我的选择有点受限。我最终使用了SquishIt(可作为NuGet包提供),并且整合起来非常容易。
<link href="/<my_css_path>/<css_file_1>.css" rel="stylesheet" type="text/css" />
<link href="/<my_css_path>/<css_file_2>.css" rel="stylesheet" type="text/css" />
<link href="/<my_css_path>/<css_file_3>.css" rel="stylesheet" type="text/css" />

成为

<%= Bundle.Css()
    .Add("~/<my_css_path>")
    .Render("~/<my_css_path>/combined_#.css") %>

基本上就是这样!JavaScript也是类似的思路。只要在您的web.config中为本地开发设置debug="true",并为您的暂存/生产环境设置debug="false",SquishIt将使您的CSS / JS保持未分离和未压缩状态以供本地开发使用,然后在其他环境中组合、压缩和哈希(用于缓存破坏)。


听起来很棒!很高兴他们考虑到了本地非压缩版本。 - devlord

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接