Я сейчас перемещаю все изображения в своем веб-приложении на CDN, но я хочу легко включить или выключить CDN без необходимости жесткого кодирования пути к изображениям.CDN для изображений в ASP.NET
Моя первая мысль заключалась в том, чтобы добавить HttpHandler для расширений изображений, зависящих от того, будет ли переменная в файле web.config (что-то вроде) служить изображению с сервера или с CDN. Но, немного поучав это, я думаю, что, по сути, решил это, поскольку это заставит ASP.NET обрабатывать запрос для каждого отдельного изображения, тем самым увеличивая накладные расходы, и это может фактически полностью смягчить преимущества использования CDN.
Альтернативный подход заключается в том, что, поскольку все мои страницы наследуются от базового класса страницы, я мог бы создать функцию в базовом классе, которая определяет, какой путь для обслуживания файлов основывается на переменной web.config. Я бы тогда сделать что-то подобное в разметке:
<img src='<%= GetImagePath()/image.png' />
Я думаю, что это, вероятно, что я должен буду в конечном итоге делает, но это кажется немного неуклюжим для меня. Я также представляю проблемы со старой ошибкой .NET, поскольку вы не можете модифицировать коллекцию управления из-за «<% =», хотя решение «<% #», вероятно, будет работать.
Любые мысли или идеи о том, как реализовать это?
Да, я не знаю, почему я даже не понял, что второй подход получает процесс ASP.net участие. , , довольно легкомысленно с моей стороны. На мой взгляд, моя самая большая проблема заключается в том, что каждый запрос изображения запрашивал бы изображение из CDN и, возможно, уменьшал бы кеширование на стороне клиента, выполненное из заголовков ответов CDN? Я не знаю достаточно о том, что происходит под капотом, чтобы сделать это определение. – Chris
Если ваш сервер HttpHandler передает данные изображения, вы не получаете никакой экономии в использовании полосы пропускания от использования CDN. Другой вариант - позволить вашему HttpHandler отправлять 302 версии CDN того же URL-адреса. – David