2014-07-25 14 views
6

Ho un dispatcher impostato con un livello di file di statistiche piuttosto profondo a causa di un particolare progetto in una situazione di multi-tenancy.È possibile ripristinare in modo ricorsivo le directory nel dispatcher Apache CQ5/AEM?

Quello che spero sia un modo per essere in grado di allineare in modo ricorsivo le directory per simulare un livello di file delle statistiche più basso per gli altri inquilini.

Esiste un comando di scarico del dispatcher che consente di eliminare in modo esplicito una directory di contenuti?

risposta

4

È possibile ottenere questo risultato inviando una semplice richiesta GET al proprio committente. Il percorso sul Dispatcher che devi colpire è /dispatcher/invalidate.cache.

le seguenti intestazioni assicurarsi che sia elaborato in modo corretto:

  • CQ-Azione: Questo può essere impostato su "Elimina" per rimuovere il contenuto. Penso che "EXPIRE" funzioni anche per contrassegnare il contenuto come non aggiornato, ma non rimuoverlo fisicamente dalla cache.
  • CQ-Handle: Specifica ciò che deve essere eliminato, a partire dalla radice della cartella della cache. Per esempio. "/ content/geometrixx", rimuoverà geometrixx e tutto ciò che sta sotto. "/" rimuove tutto nella cache.
  • Content-Length & Content-Type: Verificare che la richiesta sia gestita correttamente. Poiché non stiamo inviando un corpo, la lunghezza può essere impostata su 0. Content-Type può essere "application/octet-stream" (non hanno provato altri valori).

Il comando ricciolo finale che si sarebbe poi costruire qualcosa di simile:

curl -v \ 
-H "CQ-Action: DELETE" \ 
-H "CQ-Handle:/" \ 
-H "Content-Length: 0" \ 
-H "Content-Type: application/octet-stream" \ 
http://localhost:80/dispatcher/invalidate.cache; 

(Dove questo è rimuovere tutto dalla cache su un Dispatcher esecuzione sotto localhost sulla porta 80.qui backslash sono opzionali, solo rendendo più facile da leggere)


Si potrebbe emettere questa richiesta GET da qualsiasi casella (soggetto a vostre restrizioni del firewall, ecc), per esempio, potrebbe venire da:

  • tua CI agente di compilazione
  • un processo pianificato nell'istanza Pubblicare
  • una componente amministratore nell'istanza Autore che prende un determinato percorso per irrigare.
+1

Grazie mille. Questo è esattamente quello che stavo cercando. Leggenda. –

+0

Ho provato CQ-Handle come "/" per rimuovere tutto nella cache, ma non elimina tutte le cartelle nella cartella cache, elimina solo il file .stat nella cartella cache. Sono su dispatcher 4.1.9, Apache 2.2, Windows 7. Funziona bene per una cartella ex "/ contenuto". Qualcosa di specifico che dobbiamo configurare per "/"? –

+0

@Sandeep Kumar, non che io sappia - stai inviando anche l'intestazione 'CQ-Action: DELETE'? Funziona su un'installazione di vaniglia dello stesso stack tecnologico per te? – anotherdave

0

Non mi è chiaro l'immagine generale, ma il dispatcher IIRC esegue lo svuotamento se svuota l'intera directory e tutte le sue sottodirectory. Il file tipi da svuotare dipende dalla configurazione del dispatcher.

Quindi se si svuota/contenuto/geometrix l'intero sito sarà svuotato. (Per favore qualcuno mi corregga se ricordo male).

Il modo più semplice per farlo è IMHO per riattivare la pagina che funziona come root dell'area che si desidera eliminare. In caso contrario, si potrebbe anche sviluppare il proprio servlet fionda che invia le intestazioni appropriate per Dispatcher

http://docs.adobe.com/docs/en/aem/6-0/deploy/configuring/replication.html#Extended

Altre opzioni che sempre opere sono le stesse intestazioni HTTP ma inviati con comandi ricciolo o processi del sistema operativo che elimina la directory dal file system.

Non sto dicendo che gli ultimi due sono i migliori in quanto potrebbero esserci effetti laterali ; ma dovrebbero fare anche il lavoro.