7

在 ASP.Net 网站中的 javascript 和样式表引用上自动应用和/或更新缓存破坏器变量的好策略是什么?

例如转型

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

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

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

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

在我的脑海中,我可以想象使用 Powershell 脚本扫描所有 *.aspx 和 *.ascx 文件并使用正则表达式来查找适当的引用并更新它们。但是您知道他们对使用正则表达式的看法......那么我有两个问题:)

4

2 回答 2

3

在 ASP.Net 中缓存 buster 变量的答案是使用各种 CSS/JS 缩小库之一

我在想缓存破坏者变量需要在每次部署到我们的服务器时进行更新,但是缩小库会根据各个 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类似的想法。只要debug="true"在您的 web.config 中用于本地开发和debug="false"暂存/生产环境,SquishIt 就会使您的 CSS/JS 不分离且未缩小以用于本地开发,然后为您的其他环境组合、缩小和散列(用于缓存破坏)。

于 2012-05-10T00:27:27.980 回答
3

您可能还想研究 Cassette、RequestReduce 和 Bundler。

Cassette:自动对所有 JavaScript、CoffeeScript、CSS、LESS、Sass 和 HTML 模板进行排序、连接、缩小、缓存和版本化。

RequestReduce Makes your website faster - sometimes much faster - with almost no effort

  • Auto generates sprites from your background images
  • Optimizes Sprite PNG format and compression
  • Minifies CSS and Javascript
  • Optimizes caching headers and ETags
  • Runs on any IIS web site including Classic ASP and PHP
  • Can sync content accross multiple web servers
  • Works well with CDNs
  • Compiles Less, Sass and Coffee script

Bundler: "Compile, Minify, Combine Less/Sass/Css/JS/CoffeeScript files. Easily use from MVC"

于 2012-06-15T19:22:55.910 回答