2016-11-18 8 views
0

Imageresizer(v 4.0.5.942)にCloudflareのCDNが並んでいますが、イメージホスティングをAzureに移動しましたが、 Azureブロブストアで元に戻りました。Azure BlobstoreからImageresizer経由でCDNに変更されたデータ/時間を渡す

Imageresizerディスクキャッシングが設定されているiisボックスであって、問題が発生していない送信イメージホスティングで、同じCF CDNとImageresizerを使用しました。

当社Azureのimageresizer設定ファイルのプラグインセクションがある - http://azstagingimage.reiwa.com.au/listing/09/2635009-04.jpg?maxwidth=724&maxheight=543&quality=100

直接ImaresizerのAppへ - -

<add name="AzureReader2" prefix="~/"connectionString= 
"DefaultEndpointsProtocol=httpsAccountName=reiwastorstagimg 
AccountKey=xyzxyxyyz"` 
checkForModifiedFiles="true" /> 

テスト画像は、CDN経由でプレム設定で http://azstagingimage3.reiwa.com.au/listing/09/2635009-04.jpg?maxwidth=724&maxheight=543&quality=100

含有 -

<resizer> 
    <plugins> 
    <add name="DiskCache" /> 
    </plugins> 


<diskCache autoClean="false" hashModifiedDate="true" subfolders="1024" /> 
</resizer> 

私はディスクキャッシュ機能をオンにしていたのですが、Imageresizerは元の画像の日付/時刻スタンプをチェックし、日付/時刻のキャッシュバージョンと比較し、変更された場合は画像を再処理して、日付/時刻変更されたスタンプは、CDNによって取り上げられ、再読み取りを引き起こした。

Imageresizerのドキュメントを見ると、ImageForizerがBLOBストアに戻って元のファイルを修正してCF CDN(またはブラウザ)に渡したが、私たちが期待したとおりにやっていない。

これを回避する方法があるかどうか知っていますか、またはディスクキャッシュをクラウド上でオンにする必要がありますか?

ありがとうございます。 Kieron

答えて

0

ImageResizerはv3(画像処理要求)の「オリジナル画像」の変更日の配信を停止しました。これは無害ではあるものの、広範囲にわたる破損を引き起こしました。いくつかのブラウザとプロキシは残念ながら、最後に変更された日付から最後に取得された日付を比較します。それをエタグのように振る舞わせる方がいいですが、そうではありません。最終変更は、出力生成の日付でなければならず、または広範囲の副作用が発生している必要があります。

checkForModifiedFilesは、DiskCacheが有効になっていないとあまり関連性がありません。

ディスクキャッシュが有効になっている場合、ImageResizerは結果がキャッシュされたときに基づいて安定した変更日時を提供します。ディスクキャッシュがなければ、ImageResizerは最後に変更された日付を送信しません。通常、これはCDNが決して検証されないようにする効果はありませんが、むしろ逆の - 無効化が頻繁に行われるようになります。

ImageResizerは、通常、IISとASP.NETのヘッダー設定でうまく再生されます。一部の構成では、last-modifiedは常にutcnowに設定されます。しかし、それはあなたのサーバーでは起こっていません。

最小の痛みのパスは通常、キャッシュブレーカー(&r = 31512351など)を使用するか、すべてのブロブを不変として扱います。無効化チェックの待ち時間は通常ImageResizerユーザーにとっては受け入れられず、不変ブロブアプローチは非常に一般的です。

ImageResizerはDiskCacheでヘッダーをキャッシュするのにまともですが、ストレージや状態を保存する方法がない場合、キャッシュの選択肢で何かを壊していない解決策はありません。

ImageResizerがうまくいくかもしれません。

カスタムビヘイビアが必要な場合は、PreSendRequestHeadersを使用して簡単に変更できます。あなたが完全にコントロールしたい場合は、自分のクラスのNoCacheとClientCacheプラグインを交換するのもかなり簡単です。

+0

もう一度、CloudFlares API呼び出しを使用して変更した画像を無効にし、その間にディスクキャッシュをオンにして、データを変更するようにしました。 –

関連する問題