我们即将将.NET Web应用程序部署到Azure Web角色.我只是想知道其他人如何处理他们的静态内容,特别是图像和CSS?目前我们的应用程序包大约是25mb,但其中18mb是纯粹来自图像,导航按钮,图标和模板组件等很少得到更新的东西.将其从部署包中分区并将其移动到blob存储是否明智?
我对这种方法有些怀疑,我想知道它是有效的......
我们80%的网站都在HTTPS环境中运行.访问blob商店中的图像会引入跨脚本问题吗?
如果有人试图恶意锤击我们的图像(大多数低于20kb),那么漏金钱的漏洞呢?
我很难看到如何使用目录命名约定将文件上传到blob容器(来自VS2010 + Azure SDK),所以我不需要重写1000个路径引用?我很欣赏目录是blob容器中的抽象概念,但是我可以使用正斜杠编写文件以在代码中模仿它.显然,在我上传Visual Studio之前,Windows不允许我这样做.
任何想法或替代策略都会受到欢迎.目标实际上是缩小我们的部署包以加快部署时间.此外,我非常喜欢将图像服务卸载到专用节点以提高Web服务器性能的想法,也许我的图像集很小,几乎不值得打扰?
5月16日更新----------------------------------------------- -------------------------
这是我最后做的事情:
1.将所有图像+ css传输到blob存储容器.我维护了images和css文件夹中任何子目录的结构.
2.在我们的web.config文件中应用URL重写规则,如下所示.
<rewrite>
<rules>
<rule name="imagestoazure">
<match url="images/(.*)" />
<action type="Redirect" url="https://xxxxx.vo.msecnd.net/images/{R:1}" />
</rule>
</rules>
</rewrite>
Run Code Online (Sandbox Code Playgroud)
3.从应用程序中排除图像+ css文件夹并进行部署.
我的部署现在要小得多,而且图像正在运行CDN,从而节省了带宽,提高了下载速度并释放了网络服务器的一些负载.
更新:2015年9月
最近审查时,我遇到了Microsoft的以下指南.它详细介绍了如何使用查询字符串自动部署资产和缓存区域.
在发出CORS请求时,如果请求的Origin位于允许的源列表中,则响应包含Access-Control-Allow-Origin
标头和Vary: Origin
标头.
Vary:Origin告诉CDNs等,响应是根据请求者的Origin头值协商的.
问题是(我已经测试了领先的CDN提供商),如果请求者在他们的请求中没有提供Origin头,或者Origin值不是允许的那个,则响应不包括变化:起源于回应.
如果CDN预先形成CORS总是在响应头中响应Vary:Origin吗? 如果不是,CDN会认为它可以对任何Origin值提供相同的响应.然后,通过使用随机原始值进行许多请求,可以填充CDN缓存.
我正在使用azure blob存储将图像存储在公共容器中并将它们嵌入公共网站.一切正常,blob在xxxxx.blob.core.windows.net
我上传它们的瞬间公开可用.我想将Azure CDN用于其边缘缓存基础架构并在其中设置一个xxxxx.vo.msecnd.net
.
但是现在,当我将我的图像指向CDN时,它会返回404大约15分钟左右,然后它开始服务.在他们的文档中提到我们不应该将CDN用于高违规或频繁更改的blob,但是对于公共站点具有图像上载功能的简单CMS保证CDN不是吗?
我已经$web
按照 Microsoft 文档中的建议,使用容器成功地在 Azure Blob 存储上建立了一个静态网站。另外,我已经定义index.html
了两种的“索引文件名称”和“错误文件名”。这是因为我希望我的 JavaScript 应用程序处理404
响应。
但是,当查看 Chrome 中的网络选项卡时,我可以看到404
为我请求的 URL 抛出了a ,尽管该页面实际上可以正常工作。
我的理论如下:
404
并将 URL 重写为“错误文档名称”,即index.html
在我的情况下(因此我的页面仍然有效)我的问题是我的网址是干净的网址,例如:
/activities/some-slug
永远不会作为文件存在,这只是告诉我的 JavaScript 应用程序在哪里路由请求,即加载什么视图。
需要明确的是,该页面确实有效,因为它仍在将404
错误路由到index.html
.
我怎样才能告诉 Azure blob 只将所有内容路由到index.html
并让我的应用程序在404
必要时抛出?
我们确实已经设置了 Premium Verizon CDN,因为我最初不知道 Azure Blob 上的静态网站选项。如果 CDN 是最佳途径,请您提供有关如何配置 CDN 以提供我想要的内容的说明吗?
我已经阅读了很多文章(特别是这篇文章中的评论),我相信可能有各种解决方案,即 Azure Functions、代理、CDN 等。也就是说,没有一个提供关于如何使用这些特定服务的明确说明。
我通常在 AWS 上工作,因此并不熟悉所有 Azure …
azure static-site azure-storage-blobs single-page-application azure-cdn
我们尝试在 Microsoft 标准定价上配置 Azure CDN,以允许我们重写 Url 以将所有应用程序路由路由到 ./index.html。如何设置规则引擎来重写 url 但保留所有 js 文件原样?谷歌中的所有示例都展示了如何在高级定价上执行此操作,但我们喜欢在 Microsoft Standard 上执行此操作,这可能吗?
我在存储帐户前使用Azure CDN.我只想通过HTTPS提供所有服务,所以我在自定义域上设置了HTTPS并创建了一个URL重写:
但问题是我最终得到这样的网址: https://the-custom-domain/website/17/index.html
这website/17/index.html
是存储帐户中的根内容,但我不知道为什么它在文件名之前附加容器路径.还有静态文件的重写规则(https://blog.lifeishao.com/2017/05/24/serving-your-static-sites-with-azure-blob-and-cdn).
知道URL重写有什么问题吗?
我正在使用Azure CDN,它指向我的Azure云服务.我已经为我的JS和CSS文件启用了捆绑,而在BundleConfig中我已经设置了bundles.UseCdn = true
.
一切都运行正常,除了通过CDN返回的JS和CSS包没有压缩.如果我没有使用CDN,则压缩包返回(我可以看到Content-Encoding是gzip).
我已经在我的CDN上启用了压缩,如下图所示:
在我的ASP.net MVC web.config压缩也启用,它看起来像这样:
<urlCompression doStaticCompression="true" doDynamicCompression="true" />
<httpCompression>
<dynamicTypes>
<clear/>
<add mimeType="text/*" enabled="true" />
<add mimeType="message/*" enabled="true" />
<add mimeType="application/x-javascript" enabled="true" />
<add mimeType="text/javascript" enabled="true" />
<add mimeType="text/css" enabled="true" />
<add mimeType="application/json" enabled="true" />
<!-- HERE -->
<add mimeType="image/svg+xml" enabled="true" />
<add mimeType="image/png" enabled="true" />
<add mimeType="image/jpg" enabled="true" />
<add mimeType="image/jpeg" enabled="true" />
<add mimeType="application/font-woff2" enabled="true" />
<add mimeType="application/x-font-ttf" enabled="true" />
<add mimeType="application/octet-stream" enabled="true" />
<!-- HERE -->
<add mimeType="*/*" enabled="false" /> …
Run Code Online (Sandbox Code Playgroud) 有没有人使用托管的Web角色成功配置Azure CDN进行HTTP压缩?我们在Azure边缘服务器上压缩HTTP内容时遇到问题.CDN仅缓存内容的未压缩版本.
如果我们打我们的资源链接(WebResource.axd的从非Azure的方式通过的gzip压缩它)(使用xxxx.cloudapp.net/cdn/webresource.axd)如预期.但是,只要我们将资源链接指向Azure CDN(xxxx.vo.msecnd.net),尽管浏览器告知Azure CDN它接受gzip,但内容仍然是未压缩的.
我向Azure论坛发布了同样的问题,但是到目前为止还没有人回复.
在解决问题时,似乎Azure CDN正在剥离Accept-Encoding HTTP标头.只是好奇,如果其他人有同样的问题.
Windows Azure CDN如何使用压缩内容?
Windows Azure CDN不会修改(或添加)对象的压缩.Windows Azure CDN遵循基于"Accept-Encoding"标头的原始提供的压缩.从1.4开始,Azure存储不支持压缩.如果使用托管服务对象传递,则可以将IIS配置为返回压缩对象.
我们所看到的是CDN不尊重原点Accept-Encoding,它被剥夺了.
我正在尝试创建Azure CDN,但无法在新的Azure门户中找到要执行的选项.
根据其他消息来源,在New - > App Services菜单下应该有一个CDN选项,如下所示:
但是当我登录门户时,缺少此CDN选项.这就是我所看到的:
这与我的订阅有关吗?我正在使用"3个月的免费试用期".
更新以包括左窗格选项的屏幕截图.没有CDN!
我在azure中有一个存储帐户,它包含容器作为"images"我可以使用以下路径访问我的blob https://mystorageaccount.blob.core.windows.net/images/image1.jpg
现在我为https://mystorageaccount.blob.core.windows.net创建了CDN
并获得了一些CDN的URL
http://abcd55555.vo.msecnd.net/
但是当我尝试使用CDN访问我的BLOB时如下
http://abcd55555.vo.msecnd.net/images/image1.jpg
我得到404 - 未找到错误.
我启用了EndPoint,启用了HTTP协议,启用了QUERY STRING STATUS.
出了什么问题?