使用Imageresizer在Azure上提供.js和html5以及其他文件类型

时间:2016-11-04 11:46:53

标签: azure azure-storage imageresizer

我们在尝试通过运行imageresizer的Azure应用程序服务器.js和.html5文件时遇到问题,而该应用程序又指向blob存储区。

这有效: http://devimageresizecdnbypass.reiwa.net//bannerads/10688-0/test-image.jpg

这不是: http://devimageresizecdnbypass.reiwa.net/bannerads/10688-0/js_ex3.js

直接链接到blob商店,从而绕过imageresizer工作。

我在web.config中重写了添加imagefiles'文件夹'。

<rule name="bannerads"> 
  <match url="^bannerads/([_0-9a-z-.]+)/([_ ,0-9a-z-.]+)" /> 
  <action type="Rewrite" url="/imagefiles/bannerads/{R:1}/{ToLower:{R:2}}" /> 
</rule>

以及其他条目中,以下内容 -                                                                 

<staticContent>
  <remove fileExtension=".pdf" />
  <mimeMap fileExtension=".pdf" mimeType="application/pdf" />
  <remove fileExtension=".js" />
  <mimeMap fileExtension=".js" mimeType="application/x-javascript" />      
</staticContent> 

使用Microsoft进行诊断,他们认为当请求非jpg文件时,imageresizer不会预先挂起传递给Azure的请求的blob URL。

我们目前在本地Windows 2008r2 / iis框上运行imageresizer,这些文件服务正常。

1 个答案:

答案 0 :(得分:0)

ImageResizer不是设计为静态文件代理。 虽然有一些黑客可以让它作为一个整体,但它不会像高性能一样,并且缺少许多您可能期望作为静态文件代理的功能。

如果可能,我们建议直接链接到blob存储区或CDN端点以获取静态文件。

如果您想尝试让ImageResizer代理这些文件,您需要配置存储提供程序以允许它。

https://imageresizing.net/docs/v4/plugins/blobprovider

相关设置为:vpp="true", untrustedData="false", cacheUnmodifiedFiles="true", requireImageExtension="false".

你会对更新产生额外的担忧 - cacheMetadata的滑动行为对图片有好处,但对于即时的javascript更新不利。您还会看到磁盘缓存增长增加。

与其他提供商不同,AzureReader2还提供redirectToBlobIfUnmodified设置。如果为true,并且如果内部重写的查询字符串缺少任何处理指令,则启动重定向。检查PostRewrite事件处理程序中e.Querystring的状态可以提供有关配置或组件是否导致前提条件失败的信息。

不幸的是,如果没有诊断页面,大部分都是猜想。在这种情况下,版本,配置和自定义代码非常重要。创建一个空项目只是为了测试静态文件代理行为可能有助于您隔离问题,但如果可能,请更新此问题以及更多详细信息和您的发现。