Редактировать: теперь все это работает таинственно, хотя я не смог понять, что на самом деле вызвало проблему. Может быть, вообще не было 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.
То, что я думаю, происходит, что-то вроде:
- Клиент запрашивает загрузку файла с CDN
- CDN выясняет, что это «большой файл» и запрашивает первые 8 МБ чанка из источника
- Origin отвечает с 8-мегабайтным чанком в соответствии с просьбой
- CDN начинает возвращать 8-мегабайтный блок клиенту
- CDN либо не запрашивает следующий фрагмент, либо origin не предоставляет его
- Клиент получает только первые 8 МБ файла
Или, может быть, я лаю не на том дереве. Уже пытался отключить сжатие, не совсем уверен, куда еще идти отсюда. Вероятно, это моя вина, поэтому я неправильно настроил CDN или что-то еще? Я подумал о том, чтобы очистить кэш CDN, но на самом деле я не вижу в этом решения, и я бы предпочел избежать ручного обхода ...