2

私は CDN を調査/実装することを望んでおり (最初はサブドメイン経由でしたが、やがて CDN に移行します)、そのサブドメイン上のファイルのバージョンの処理について説明しているリソースを見つけようとしています。

私が以前働いていたほとんどの場所では、リソース (画像、javascript、css など) のキャッシュが実装されており、画像を変更したい場合は、画像のファイル名を変更し、参照を変更するという面倒なプロセスを経てきました。ソース コードに含めます (キャッシュされた画像ではなく、新しい画像が表示されるようにします)。

達成したいこと

私が欲しいのは次のとおりです: resources.domain.com

次のようなサブフォルダーがあります。

  • スクリプト/
  • 画像/
  • css/

問題ではなく、yslow/ページ速度スコアに役立ちます (Cookie のないドメインなどを想定)。

しかし、資産のバージョン管理は解決したいものです。

例えば

resources.domain.com/images/promo_banner1.jpg

おそらく10〜15日ごとにキャッシュして期限切れにする必要があります。

ビジネス リクエストとして何かキーが入ってきて、それを変更する必要があると仮定すると、それをオーバーライドできるようにしたいと考えています。私理解していることから、クエリ文字列 (?1.1) を追加して、ブラウザーに別のリソースとして表示させることができます。

MVC (または実際には ASP.NET) でこれを実行できることはわかっています。これは、おそらくリソース ファイルまたは同様のものを検索して新しいバージョンがあるかどうかを確認する「CompanyResource」html ヘルパーを作成し、そうであれば、バージョンを追加します。クエリ文字列要素としての番号ですが、より良い方法が必要ですか?

それで、コミュニティは何を思いつきましたか?

  • サブドメイン内のリソースを処理する最善の方法 (これに関する yslow/google バックアップ ドキュメントをすべて読んだと仮定します)
  • アセットのバージョン管理 (何かが更新されたときに全体的なコードの変更を最小限に抑えるため) を処理するために、人々は何を考え出しましたか? いくつかのルールに基づいてアセットを配信するためのコードベースのヘルパーメソッド?

うまくいけば、私はあまりワッフルしていません。

あらゆる助けをありがとう:)

乾杯、テリー

4

1 に答える 1

3

これが回答されていないことに気づきました-ASP.NETMVCでのHtmlヘルパーに関する問題を以下を使用して解決しました。

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に移行することを選択した場合、最小限の手間でそれを行うことができます。

それが誰かを助けることを願っています。

乾杯、テリー

于 2010-05-17T07:19:49.020 に答える