Pergunta

Fundo

  • Eu estou construindo um aplicativo que as ligações recentes páginas da web que você visitou juntos.

  • Para fazer isso, eu preciso para obter o código HTML para URLs recentes usando cacau.

  • Agora, eu estou usando um invisível WebView para fazer isso.

  • Pelo que entendi, se a URL não é no cache para meu aplicativo, este é bater servidores web.

O que eu quero

As chances são altas de que a URL Eu estou agarrando já foi armazenado em cache pelo Safari como a página já foi visitada.

Eu quero meu aplicativo para verificar o cache do Safari para o URL em primeiro lugar. Se ele está lá, ele deve apenas utilizar esses dados. Se não, ele deve bater o servidor web e armazenar a página em cache do meu aplicativo.

Eu realmente não quero ter que analisar o arquivo cache.db do Safari usando sqlite3 - Não tenho a menor idéia se este formato permanecerá o mesmo. Estou atrás de algo nível mais simples e mais alta.

O que eu tentei

Eu sei que você pode criar o seu próprio NSURLCache usando o initWithMemoryCapacity:diskCapacity:diskPath: método, mas eu não quero tentar apontar isso para o cache do Safari no caso de parafusos até Safari escrevendo para ele.

Existe uma maneira fácil, alto nível de compartilhar o cache Safari?

Atualizar

Aha. Acabei de perceber que pode haver uma maneira de fazer isso eu estive ausente.

Eu poderia fazer uma nova instância do NSURLCache com initWithMemoryCapacity:diskCapacity:diskPath:, apontá-lo para o cache do Safari, em seguida, especificar uma política de cache de NSURLRequestReturnCacheDataDontLoad para a solicitação de URL ao carregar a página.

Quando isso falhar, eu poderia apenas tentar carregar a página como normal. Vou tentar fazer isso e atualizar a questão quando eu sei mais.

Foi útil?

Solução

Para ser honesto, você simplesmente não pode fazer isso.

Em primeiro lugar, estou certo de -[NSURLCache initWithMemoryCapacity:diskCapacity:diskPath:] não vai funcionar como você espera. Ele, ao contrário, soprar o arquivo de cache de idade para criar o seu próprio; potencialmente muito perturbar Safari.

Em segundo lugar NSURLCache é uma composta cache. Ou seja, ele armazena dados em primeiro lugar na memória e, em seguida, move-lo para o disco em algum ponto. Assim, mesmo se você pudesse adequadamente o acesso ao arquivo de cache do Safari (que você não pode) você só será capaz de acessar os dados armazenados em cache mais velhos; não é o mais recente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top