CDN / поддомен, ресурсы и управление версиями - PullRequest
2 голосов
/ 31 января 2010

Я надеюсь исследовать / внедрить CDN (первоначально только через субдомен, хотя и вовремя переходить на CDN), и у меня есть ресурсы для поиска, которые говорят об обработке версий файлов в этом субдомене. .

В большинстве мест, где я работал ранее, реализовано кэширование ресурсов (изображения, javascript, css и т. Д.), И, когда нужно изменить изображение, пришлось пройти через мучительный процесс простого изменения имени файла изображения и изменения ссылка на него в исходном коде (чтобы клиенты видели новое, а не кэшированное изображение).

Чего я хочу достичь

что я хотел бы это: resources.domain.com

с подпапками, такими как:

  • Сценарии /
  • изображения /
  • CSS /
  • и т.д.

не проблема, и поможет с оценкой скорости yslow / page (при условии домена без cookie и т. Д.)

Но я хочу решить проблему с версиями ресурсов.

1027 * Е.Г. *

resources.domain.com/images/promo_banner1.jpg

Мне, вероятно, придется кэшировать и истекать, возможно, каждые 10-15 дней.

Предполагая, что у нас есть что-то ключевое в качестве бизнес-запроса, и мы должны изменить его, я хочу иметь возможность это переопределить. Из того, что я понимаю, я мог бы добавить к нему строку запроса (? 1.1), чтобы браузеры увидели его как другой ресурс.

Я знаю, что могу сделать это в MVC (или, действительно, в ASP.NET), создав HTML-помощник «CompanyResource», который будет искать, возможно, файл ресурсов или что-то подобное, чтобы увидеть, есть ли у нас новая версия, и если да, добавить номер версии в качестве элемента строки запроса, но должен быть лучший способ?

Итак, что придумало сообщество?

  • как лучше обращаться с ресурсами в поддомене (предположим, что я прочитал все документы по резервному копированию yslow / google по этому вопросу)
  • Что придумали люди для управления версиями ресурсов (чтобы минимизировать общие изменения кода при обновлении) - вспомогательные методы на основе кода для доставки ресурсов на основе некоторых правил?

Надеюсь, я не слишком много вафлю.

Спасибо за любую помощь:)

Ура, Терри

1 Ответ

3 голосов
/ 17 мая 2010

только что заметил, что на этот вопрос не было ответа - мы решили проблему с помощью Html-помощников в ASP.NET MVC, используя следующее.

В web.config мы сохранили «resources_url» (в данном случае resources.mycompany.co.uk) и вызвали следующее:

<%= Html.MyCompanyResourceScript("~/scripts/jquery-1.4.2.min.js") %>

Что в переводе на Html помощник:

public static string MycompanyResourceScript(this HtmlHelper helper, string url)
{
    string _out = String.Format(@"<script type=""text/javascript"" src=""{0}""></script>", url.ToMyCompanyUrlAction(helper.ViewContext.HttpContext));
    return _out;
}
public static string ToMyCompanyUrlAction(this string url, HttpContextBase context)
{
return String.Format("{0}://{1}{2}", 
    (context.Request.IsSecureConnection ? "https" : "http"),
    WebConfigurationManager.AppSettings["resources_url"],
    VirtualPathUtility.ToAbsolute(url, "/"));
}

Мы создали помощников для MyCompanyResourceImage и MyCompanyResourceCss с подходящими параметрами для alt-тегов / типов мультимедиа и т. Д. Также.

Это означает, что мы можем (с самого начала) хостить через наш собственный домен ресурсов, и если в будущем мы решим перенести это в CDN, то мы сможем сделать это с минимальными усилиями.

Надеюсь, это кому-нибудь поможет.

Ура, Терри

...