Como obter todo o html e arquivos gerados de um página desenvolvida em JSF?

Olá a todos da Comunidade GUJ, estou com o seguinte problema:
Estou querendo desenvolver um mecanismo de static publishing responsável por armazenar as páginas HTML geradas a partir de páginas escritas em JSF. desta forma preciso saber como consigo obter a página gerada por um facelet e como salvar todos os arquivos escritos no html como imagens e documentos.
Não gostaria de usar cache pois o meu objetivo é que a aplicação não consuma muita memória e seja extremamente rápida.
Desde já agradeço a todos.

O que é que o uso de cache tem haver com memória?

Se você botar um apache na frente do seu servidor web Java e definir políticas de cache HTTP o seu servidor web raramente vai responder alguma coisa, tudo vai morrer no próprio apache que ainda vai instruir os clientes a fazer caching das páginas tambpem, deixando tudo ainda mais rápido.

Amigo esta abordagem serve para que a aplicação não precise compilar as páginas toda vez que alguém visualize as páginas. Para que ele funcione corretamente eu só preciso armazenar as páginas com as modificações mais recentes em uma pasta e através de um servlet decidir se a página já foi compilada e armazenada, ou ainda tem que ser acessada e compilada.
A minha intensão é que todos os mecanismos fiquem dentro da aplicação, sem qualquer configuração externa. E quando eu falo de cache estou falando de JSF tags como <s:cache> ou adf:cache que guardam as páginas compiladas em memória.
O que eu quero é saber como ao fim da resposta do Faces Servlet ou da compilação do Facelet armazenar o html e as imagens geradas em uma pasta para futura visualização?

Bem, se o que você quer é gambiarra, aí vai ela.

Crie o seu próprio HttpServletResponse, pegue todas as escritas nos streams dele (pode tanto ser um print stream ou um output stream comum) e você tem tudo o que foi escrito durante essa requisição. Pra passar esse seu HttpServletResponse você também vai precisar criar um filtro que vai pegar o HttpServletResponse real e botar dentro do seu “caching” HttpServletResponse.

Mais uma vez, isso é uma gambiarra, o melhor é utilizar os mecanismos de cache do próprio HTTP.

E não se esqueça que não se faz cache de páginsa que tem parâmetros de GET, então faça uso de reescrita de URL (aqui como nas URLs aqui do GUJ), passando os parâmetros na própria URL (que seria o nome do arquivo gerado) e não em parâmetros de URL…

Ok, já que o que eu estou querendo é gambiarra, como eu faria da maneira correta?

Muito obrigado mesmo, pois você realmente está tentando me ajudar.

A maneira que eu acho mais simples é a que eu disse anteriormente, use um servidor apache comum e defina políticas de cache pra suas páginas JSF, o resto o apache e o cliente da sua aplicação (o navegador) fazem sozinhos e você não teria que fazer mágica, ficar controlando quando os arquivos foram alterados, controlar sobrescritas e coisas do gênero.

Estude as formas de caching do HTTP que você vai ver como é bem mais simples.