gpt4 book ai didi

javascript - Azure 上 JavaScript 文件的策略

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:27:44 24 4
gpt4 key购买 nike

我正在制定在 Azure 上存储和部署 JavaScript 文件的策略(ASP.NET Web Angular 色)我的要求是:

  1. 在生产中使用缩小版本
  2. 在开发环境中使用原始版本(即未缩小的)本地版本(以简化调试)
  3. 简单的构建/部署过程 (VS2010)
  4. 简单的更新过程(我的文件会不时更改)

这里有一个很好的讨论Visual Studio 2010: Publish minified javascript files instead of the original ones但是,这并未考虑 Azure 可以提供的优势或使用多个实例的优势。

我正在考虑将缩小的 JavaScript 文件部署到 blob 存储并在生产版本中使用它们。这些将使用大型 max-age 缓存控件进行存储,以进行客户端缓存,文件名将存储版本(以便我可以轻松更新)。我欢迎对此策略提供反馈。

因此,在开发中,渲染的 HTML 将引用本地脚本文件,即:

<script src="Scripts/myjavascript-0.0.1.js" type="text/javascript"></script>

但在生产中,结果应使用以下内容来引用缩小版本。

<script src="http://myblob.blob.core.windows.net/Scripts/myjavascript-0.0.1.js" type="text/javascript"></script>

我的主要问题是如何最好地实现开发和生产路径的自动切换。或者自定义处理程序是否是正常路由(如果是这样,那将如何工作 - 我不希望每个实例在每个请求时从 blob 重新加载)。

最佳答案

关于#1 和 2:

我讨论了一个策略 here 。基本思想是使用辅助函数来发出脚本标签。该函数可以在 Debug模式下构建到调试文件的链接,否则可以构建到缩小文件的链接(这也使得使用缩小文件进行本地测试变得容易)。相同的函数可以处理向路径添加版本以实现缓存失效等。

关于#3:

将缩小添加为构建后步骤。我将其添加到我的 csproj (这只是一个 msbuild 文件)中,它使用 yui-compressor:

<Target Name="AfterBuild" Condition="'$(Configuration)' != 'Debug'">
<!-- remove previous minified files -->
<Exec Command="del $(ProjectDir)Styles\*-min.css" />
<Exec Command="del $(ProjectDir)Scripts\*-min.js" />
<!-- Minify javascript and css, unless we're in Debug -->
<Exec Command="java -jar $(ProjectDir)..\yuicompressor\build\yuicompressor-2.4.6.jar -o .css$:-min.css --charset utf-8 $(ProjectDir)Styles\*.css" />
<Exec Command="java -jar $(ProjectDir)..\yuicompressor\build\yuicompressor-2.4.6.jar -o .js$:-min.js --charset utf-8 $(ProjectDir)Scripts\*.js" />
</Target>

这将分别在 ~\Scripts 和 ~\Styles 中创建缩小的 *-min.js*-min.css 文件。

警告 bug in version 2.4.6 的 B/c对于 yui 压缩器,如果目录中只有一个 .css.js 文件,则上述操作将不起作用。

关于javascript - Azure 上 JavaScript 文件的策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6738117/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com