Обслуживание файлов .js и html5, а также файлов других типов в Azure с помощью Imageresizer

У нас возникли проблемы с сервером файлов .js и .html5 через приложение Azure, обслуживающее работающий imageresizer, который, в свою очередь, указывает на хранилище 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, чтобы добавить «папку» с файлами изображений.

<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 не предварительно ожидает URL-адрес большого двоичного объекта для запроса, переданного обратно в Azure, когда запрашиваются файлы, отличные от jpg.

В настоящее время мы запускаем imageresizer на локальной машине Windows 2008r2/iis, и эти файлы работают нормально.


person Kieron Murphy    schedule 04.11.2016    source источник


Ответы (1)


ImageResizer не предназначен для использования в качестве прокси-сервера для статических файлов. Хотя есть хаки, чтобы заставить его работать как единое целое, он не будет таким производительным и не имеет многих функций, которые вы могли бы ожидать в качестве прокси-сервера для статических файлов.

Если возможно, вместо этого мы рекомендуем напрямую ссылаться на хранилище BLOB-объектов или на конечную точку CDN для статических файлов.

Если вы хотите использовать прокси-сервер ImageResizer для этих файлов, вам нужно настроить поставщика хранилища, чтобы разрешить это.

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

Соответствующие настройки: vpp="true", untrustedData="false", cacheUnmodifiedFiles="true", requireImageExtension="false".

У вас будут дополнительные проблемы с обновлениями — скользящее поведение cacheMetadata хорошо для изображений, но не подходит для немедленных обновлений javascript. Вы также увидите повышенный рост дискового кэша.

AzureReader2, в отличие от других поставщиков, также предлагает настройку redirectToBlobIfUnmodified. Если true, и ЕСЛИ во внутренней переписанной строке запроса отсутствуют какие-либо директивы обработки, то инициируется перенаправление. Проверка состояния e.Querystring в обработчике событий PostRewrite может дать представление о том, является ли конфигурация или компонент причиной сбоя предварительных условий.

К сожалению, без страницы диагностики большая часть этого является предположением. Версия, конфигурация и пользовательский код имеют большое значение в этой ситуации. Создание пустого проекта только для проверки поведения прокси-сервера статического файла может помочь вам изолировать проблему, но, если возможно, обновите этот вопрос, указав более подробную информацию и свои открытия.

person Lilith River    schedule 04.11.2016
comment
Спасибо, Натаниэль, как вы предложили, мы изменим наш сайт, чтобы он указывал прямо на хранилище BLOB-объектов. - person Kieron Murphy; 08.11.2016