Problema
Il Dispatcher mette in cache una cartella invece di un file per le immagini sotto /content/dam in determinati scenari.
Per esempio, si hanno questi URL:
/content/dam/Albin/Untitled.jpg - Immagine originale
/content/dam/Albin/Untitled.jpg/jcr:content/renditions/cq5dam.thumbnail.319.319.319.png - Rappresentazione per dispositivi di tipo 1x
A volte il secondo URL è messo in cache, quindi l'URL dell'immagine originale non può essere messo in cache.
Ambiente
- SP3 di AEM 6.0
- Dispatcher 4.1.11 per Apache 2.4 su Linux x86 a 64 bit
Causa
Il seguente scenario è una causa comune di questo problema:
Se si accede all'immagine prima dai dispositivi mobili, viene creata la cartella Untitled.jpg per memorizzare nella cache l'immagine di rendering. Le immagini di spedizione sono abbinate ai dispositivi mobili. Per esempio, questo file sarà memorizzato nella cache /content/dam/Albin/Untitled.jpg/jcr:content/renditions/cq5dam.thumbnail.319.319.319.png e Untitled.jpg sarà memorizzato nella cache come cartella, non come file.
Mentre l'immagine è accessibile dai browser desktop, il dispatcher cerca di restituire la cartella Untitled.jpg come immagine. Ad esempio, /content/dam/Albin/Untitled.jpg, l'immagine originale viene abbinata ai browser desktop. Quindi, il collegamento dell'immagine è interrotto nel browser.
In alternativa, se l'immagine è prima accessibile dal browser del desktop, allora il dispatcher lo metterà in cache Untitled.jpg come immagine. La successiva richiesta all'immagine di rendering fallisce perché l'immagine non esiste nella cache del distributore. L'immagine viene recuperata dall'istanza di pubblicazione per il rendering. Le immagini rappresentate non vengono memorizzate nella cache in questo scenario come Untitled.jpg e vengono create come immagine.
Risoluzione
In questo scenario, si suggerisce di accedere alle immagini utilizzando selettori invece di fare riferimento diretto alle rappresentazioni in DAM. Questo consentirebbe l'accesso e la memorizzazione nella cache per tutte le rappresentazioni e anche per le immagini originali. Di seguito è riportata la spiegazione dettagliata della stessa.
Ad esempio, se l'immagine in AEM a cui accedere è: /content/dam/mysite/image.png/_jcr_content/renditions/image.thumbnail.48.48.48.png
Per utilizzare l’approccio menzionato, l’URL utilizzato è del seguente formato:
Per le rappresentazioni: /content/dam/mysite/image.png.thumb.48.48.48.png
Per l’immagine originale: /contenut/dam/mysite/image.png
Fare riferimento all’esempio di lavoro nell’istanza OOTB AEM:
Immagine originale: /Contenuti/dam/geometrixxxx-outdoors/attività/snowboarding/PDP_1_c05.jpg
Rappresentazione: /content/dam/geometrixx-outdoors/activities/snowboarding/PDP_1_c05.jpg/jcr:content/renditions/cq5dam.thumbnail.48.48.48.png?cq_ck=1466443646000
Rappresentazione con selettori: /content/dam/geometrixxxx-outdoors/activities/snowboarding/PDP_1_c05.jpg.thumb.48.48.48.png
Rappresentazioni con diverse altezze e larghezze, 140.100: /dam/geometrixx-outdoors/activities/snowboarding/PDP_1_c18.jpg.thumb.100.140.png (Nota: In questo caso l’altezza e la larghezza sono invertite)
Ad ogni modo, questo problema si incontra in altri scenari, quindi, per evitare errori 403 causati dalle cartelle, è possibile aggiungere la direttiva DirectorySlash Off nella configurazione virtualhost utilizzata da AEM in Apache HTTP Server. Questo aiuterebbe a evitare di servire una risposta 403 invece dell’immagine originale. Consulta questo articolo per ulteriori informazioni.