問題点
特定のシナリオにおいて、Dispatcher が /content/dam の下にある画像に対して、ファイルの代わりにフォルダーをキャッシュします。
例えば、次の URL があるとします。
/content/dam/Albin/Untitled.jpg - 元の画像
/content/dam/Albin/Untitled.jpg/jcr:content/renditions/cq5dam.thumbnail.319.319.png - 1x デバイスのレンディション
2 つ目の URL がキャッシュされ、元の画像の URL をキャッシュできない場合があります。
環境
- AEM 6.0 SP3
- Linux x86 64 ビット上で動作する Apache 2.4 用 Dispatcher 4.1.11
原因
次のシナリオにこの問題の一般的な原因を示します。
最初に画像がモバイルデバイスからアクセスされると、レンディション画像をキャッシュするために Untitled.jpg フォルダーが作成されます。 レンディション画像はモバイルデバイス用に対応付けられます。 例えば、このファイルは /content/dam/Albin/Untitled.jpg/jcr:content/renditions/cq5dam.thumbnail.319.319.png としてキャッシュされ、Untitled.jpg はファイルではなくフォルダーとしてキャッシュされます。
画像がデスクトップブラウザーからアクセスされると、Dispatcher はフォルダー Untitled.jpg を画像として返そうとします。 例えば、/content/dam/Albin/Untitled.jpg の場合、元の画像はデスクトップブラウザー用に対応付けられます。 したがって、画像リンクがブラウザー内で切断されます。
または、画像が最初にデスクトップブラウザーからアクセスされた場合、Dispatcher は Untitled.jpg を画像としてキャッシュします。レンディション画像に対する後続のリクエストは、画像が Dispatcher キャッシュに存在しないので、失敗します。 画像は、レンダリングのためにパブリッシュインスタンスから取得されます。 このシナリオでは、レンディション画像は Untitled.jpg としてキャッシュされず、画像として作成されます。
解決策
このシナリオでは、DAM でレンディションを直接参照する代わりに、セレクターを使用して画像にアクセスすることをお勧めします。これにより、すべてのレンディションと元の画像について、アクセスとキャッシュが可能になります。詳細な説明を次に示します。
例えば、AEM で次の画像にアクセスするとします。/content/dam/mysite/image.png/_jcr_content/renditions/image.thumbnail.48.48.png
前述のアプローチを使用する場合、使用される URL の形式は次のとおりです。
レンディション用:/content/dam/mysite/image.png.thumb.48.48.png
元の画像用:/content/dam/mysite/image.png
OOTB AEM インスタンスでの作業例を参照してください。
元の画像:/content/dam/geometrixx-outdoors/activities/snowboarding/PDP_1_c05.jpg
レンディション:/content/dam/geometrixx-outdoors/activities/snowboarding/PDP_1_c05.jpg/jcr:content/renditions/cq5dam.thumbnail.48.48.png?cq_ck=1466443646000
セレクターを使用したレンディション:/content/dam/geometrixx-outdoors/activities/snowboarding/PDP_1_c05.jpg.thumb.48.48.png
高さと幅が異なる(140.100)レンディション:/dam/geometrixx-outdoors/activities/snowboarding/PDP_1_c18.jpg.thumb.100.140.png(注意:この場合、高さと幅が逆になります)
この問題が他のシナリオで発生した場合は、フォルダーに起因する 403 エラーを回避するために、Apache HTTP Server 内の AEM が使用する virtualhost 設定に DirectorySlash Off ディレクティブを追加できます。 これは、元の画像の代わりに 403 応答が返されるのを避けるのに役立ちます。 詳しくは、この記事を参照してください。
アカウントにログイン