2016-12-02 14 views
0

私は新しいSitecore 8.1インスタンスを稼動しています。 Sitecoreは、 "/-/media/Images/FOLDER/IMAGENAME.jpg"のようなURLを持つメディアハンドラを介して画像を読み込みます。 Sitecore Media Handlerは、Sitecoreデータベース内のイメージを見つけて実際のイメージファイルを返すように実行する必要があります(イメージはディスク上に存在しません)。 SitecoreがImageResizerに処理させるのではなく、要求を盗み出すので、ImageResizerにSitecore画像を処理させることはできませんでした。意味をなさないディスクキャッシュのプラグインでSitecore

しかし私は、本当によく働くサイトコアのカスタムパイプラインを実装しました:

var settings = new ResizeSettings(HttpContext.Current.Request.QueryString); 
ImageBuilder.Current.Build(args.OutputStream.Stream, stream, settings); 
args.OutputStream = new MediaStream(stream, args.MediaData.Extension, args.MediaData.MediaItem); 

それはして正常にクライアントにリサイズした画像を返します。しかし、ディスクキャッシュを有効にして、オンデマンドですべてのリサイザ要求を処理する必要がなく、この問題のためのリソースを見つけられないようにする方法はわかりません。

自分のカスタムパイプラインを避け、ネイティブImageResizerを有効にして、自分のシナリオ(Sitecore Media)でDiskCacheプラグインを使用できることはありますか?それとも、自分のパイプラインを修正してDiskCacheクラスを使用して自分自身をセットアップする方法はありますか?

ありがとうございます!

答えて

1

なぜ自分のイメージリザイザを使用しますか?

あなたがすでに利用しているSitecoreメディアハンドラは、クエリーストリングのパラメータを追加することでオリジナルのアップロードされた画像のサイズを変更することもできます。これはあなたのキャッシングの問題を解決し、独自のプラグインを構築する必要はありません。

sitecoreは自動的にリサイズされたイメージをディスク上に保持します(ディスクキャッシュとして、同じイメージの後続のリクエストに対するパフォーマンスを大幅に向上させるため、デフォルトのsitecore機能を使用することを強くお勧めします)。これらのすべての一時ファイルが削除された場合(たとえば、新しいインストール/デプロイメントで)、キャッシュが再作成されます。

イメージURLにパラメータを追加するだけでイメージのサイズを変更できます。 画像へのURLが /-/media/Images/FOLDER/IMAGENAME.jpg の場合、wパラメータを追加することで幅を設定できます。
/-/media/Images/FOLDER/IMAGENAME.jpg?w=150 高さにhパラメータを追加します。

  • ワット:幅(ピクセル単位)
  • H:高さ(ピクセル単位)
  • MW:ピクセル単位の最大幅
  • MH:画素
  • の最大高さ

    これらは可能なパラメータでありますla:言語(デフォルトのコンテキスト言語)

  • vs:バージョン(デフォルトは最新バージョン)
  • デシベル:として背景色(黒デフォルト)
  • :ポイント番号(皮下=浮動することによってスケール:
  • SC(= 1として)ストレッチを許可データベース名(コンテキストデータベースデフォルト)
  • BC。25 = 25%)
  • THN:サムネール(THN = 1)
  • DMC:無効メディアキャッシング、検索及び記憶の両方(DMC = 1)

メモに取るもう一つがあることをアカウント。あなたはmedialibrary画像にクエリ文字列値の追加を開始する前に、あなたはすべての画像のクエリ文字列に追加のハッシュを追加する必要があることを意味します

      <setting name="Media.RequestProtection.Enabled" value="false"> 

デフォルト値はtrueで設定この設定を、見つけるために必ず必要がありますそれがサイズ変更される前に。これをfalseに設定すると、画像サイズ調整を試して慣れることができますが、この設定をfalseにすることは実稼働環境ではお勧めできません。つまり、最終的には、リサイズパラメータを使用するイメージに対して、すべてのイメージリクエストにハッシュ値を設定する必要があります。 あなたができることはとても簡単です。ただ、一緒に画像のURLを渡す次のコードでは、そのすべてのリサイズのパラメータになります。

var url = "/-/media/Images/FOLDER/IMAGENAME.jpg?w=150"; 
url = Sitecore.Resources.Media.HashingUtils.ProtectAssertUrl(url) 
+0

は、サイトコアの画像リサイズ機能(例:品質圧縮)で用意されていないImageResizerの機能がいくつかあります。 ImageResizerを使ってイメージのサイズを変更し、ImageResizerのDiskCacheプラグインとは対照的にSitecoreのMediaCache機能を使用して問題を解決しました。 – kamojoe

関連する問題