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

Serving .js and html5 and other file type on Azure with Imageresizer

我们在尝试通过服务于 Azure 应用程序 运行ning imageresizer 的 .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 中重写以添加图像文件 'folder'。

<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 对其进行诊断,他们认为 imageresizer 不会在请求非 jpg 文件时将 blob URL 预先添加到传回 Azure 的请求中。

我们目前 运行 本地 Windows 2008r2/iis 机器上的 imageresizer,这些文件运行良好。

ImageResizer 并非设计为静态文件代理。 尽管有一些技巧可以使它作为一个整体,但它的性能不会那么好,并且缺少许多您可能期望作为静态文件代理的功能。

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

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

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

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

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

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

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