Azure CDN - урезать "большие файлы" как-нибудь? - PullRequest
0 голосов
/ 29 августа 2018

Редактировать: теперь все это работает таинственно, хотя я не смог понять, что на самом деле вызвало проблему. Может быть, вообще не было CDN? Оставьте это здесь для потомков и обновлю, если я когда-нибудь увижу, что подобное снова случится ...

Я экспериментировал с использованием Azure CDN (размещенной в Microsoft, а не Akamai или Verizon) для обработки загрузки файлов для пары веб-приложений Azure, и он работал нормально до сегодняшнего дня, когда он начал возвращать усеченные версии " большой файл ", в результате чего файл PDF не может быть открыт (под" большим файлом "я имею в виду особенность Оптимизация больших файлов Azure CDN).

Файл отлично работает с исходного URL-адреса и составляет 8,59 МБ, но тот же файл, извлеченный из конечной точки CDN, равен точно 8 МБ. Что, по подозрительному совпадению, совпадает с размером фрагмента, использованным вышеупомянутой функцией оптимизации больших файлов. Соответствующая часть документации:

Azure CDN Standard от Microsoft использует технику, называемую разбиение на объекты. Когда запрашивается большой файл, CDN извлекает меньшие части файла из источника. После того, как POP-сервер CDN получает полный файл или запрос в байтовом диапазоне, пограничный сервер CDN запрашивает файл у источника порциями по 8 МБ. ... Эта оптимизация основана на способности исходного сервера поддерживать запросы в диапазоне байтов

URL файлов, о которых идет речь:

Я также загрузил этот же файл непосредственно в файловую систему сайта, чтобы исключить вмешательство CMS (Umbraco) и его файловой системы blob-storage-filesystem, но в любом случае это точно такой же результат. Вот ссылки для справки.

В обоих случаях эти два файла являются двоичными идентичными, за исключением того, что файл из CDN внезапно останавливается на 8 МБ, даже несмотря на то, что источник поддерживает запросы диапазона байтов (проверено с помощью Postman), а в документации Azure CDN, связанной выше, утверждается, что

Если не все чанки кэшируются в CDN, предварительная выборка используется для запроса чанков от источника

И это

Максимальный размер файла не ограничен.

Та же проблема возникла и с другими файлами размером более 8 МБ, хотя ранее они работали на прошлой неделе. С тех пор не было внесено никаких изменений в конфигурацию CDN.

То, что я думаю, происходит, что-то вроде:

  1. Клиент запрашивает загрузку файла с CDN
  2. CDN выясняет, что это «большой файл» и запрашивает первые 8 МБ чанка из источника
  3. Origin отвечает с 8-мегабайтным чанком в соответствии с просьбой
  4. CDN начинает возвращать 8-мегабайтный блок клиенту
  5. CDN либо не запрашивает следующий фрагмент, либо origin не предоставляет его
  6. Клиент получает только первые 8 МБ файла

Или, может быть, я лаю не на том дереве. Уже пытался отключить сжатие, не совсем уверен, куда еще идти отсюда. Вероятно, это моя вина, поэтому я неправильно настроил CDN или что-то еще? Я подумал о том, чтобы очистить кэш CDN, но на самом деле я не вижу в этом решения, и я бы предпочел избежать ручного обхода ...

...