【发布时间】:2011-08-06 16:00:34
【问题描述】:
我正在开发我的第一个 Windows Azure 应用程序,我想知道人们如何在他们的应用程序中管理 CSS 和 JS 文件?
目前我的 CSS 和 JS 只是我的云应用程序的一部分,所以每次我对 CSS 进行小的更改时,都需要重新部署应用程序,这并不理想。从云应用程序中删除这些组件并将它们部署到其他地方是最佳实践吗?如果是这样的话,存放它们的最佳地点是哪里?在使用 blob 或其他东西的云存储帐户中?
【问题讨论】:
我正在开发我的第一个 Windows Azure 应用程序,我想知道人们如何在他们的应用程序中管理 CSS 和 JS 文件?
目前我的 CSS 和 JS 只是我的云应用程序的一部分,所以每次我对 CSS 进行小的更改时,都需要重新部署应用程序,这并不理想。从云应用程序中删除这些组件并将它们部署到其他地方是最佳实践吗?如果是这样的话,存放它们的最佳地点是哪里?在使用 blob 或其他东西的云存储帐户中?
【问题讨论】:
请记住,如果您将资产放入存储中,则每次出现包含存储链接的页面请求时,都会被视为一次存储交易。目前,它们的价格为每 10,000 美元 0.01 美元,因此需要一段时间才能变得昂贵。但是,如果给定页面上有 2 个 CSS 文件、2 个 JS 文件和 4 个图像,则每个页面请求有 8 个事务。
如果您每天收到 1000 个页面请求 * 30 天,即每月 240,000 / 10,000 = 0.24 美元。如果您的页面请求保持低位,这没什么大不了的。但是,如果您的网站的流量甚至更高,它就会开始迅速增加。
【讨论】:
是的,将您的资产放入存储中的公共容器中,并从 Web 应用程序构建存储帐户容器的绝对 URL(使用辅助方法)。通过这种方式,您可以在资产发生变化时少量上传。
下一步是通过 CDN 公开容器以获取分布式边缘缓存。
【讨论】:
我们使用 Azure CDN 将 JS 和 CSS 存储在 blob 中,效果很好。
一个完全不同的“解决方案”可能是检查: http://blogs.msdn.com/b/windowsazure/archive/2011/07/12/now-available-windows-azure-accelerator-for-web-roles.aspx
我个人还没有使用它们,但它们应该可以让您更改/更新您的网络角色项目,而无需重新部署整个项目。
【讨论】:
如果 CSS 文件是从不同的域引用的,我不确定这是否会像您对 CSS 文件所期望的一样容易。
浏览器可能会阻止托管在不同域中的 CSS 文件。请参阅跨域资源共享:http://www.w3.org/TR/cors/ 但是我不确定这是否被广泛实施。
另一种方法可能是使用一个处理程序,它将对您服务器上的 CSS 文件的请求转发到 blob。
【讨论】: