ContexteComment partager le magasin NSURLCache de Safari?
Je construis une application qui relie ces dernières pages Web que vous avez visité ensemble.
Pour ce faire, j'ai besoin d'obtenir le code HTML pour les URL récentes utilisant Cocoa. En ce moment, j'utilise un WebView invisible pour ce faire. Si je comprends bien, si l'URL n'est pas dans le cache de mon application, il s'agit de pour les serveurs Web.
Ce que je veux
Les chances sont élevées que l'URL que je suis preneuse a déjà été mis en cache par Safari comme la page a déjà été visité.
Je souhaite que mon application vérifie d'abord le cache de Safari pour l'URL. Si c'est là, il devrait simplement utiliser ces données. Sinon, il devrait frapper le serveur web et stocker la page dans le cache de mon application.
Je ne veux pas vraiment avoir à analyser le fichier cache.db de Safari en utilisant sqlite3 - Je ne sais pas si ce format restera le même. Je suis après quelque chose de plus simple et de plus haut niveau.
Ce que j'ai essayé
Je sais que vous pouvez configurer votre propre NSURLCache en utilisant la méthode initWithMemoryCapacity:diskCapacity:diskPath:
mais je ne veux pas essayer de l'avoir signalé dans le cache Safari dans le cas où il Fout Safari écrire à elle.
Existe-t-il un moyen simple et efficace de partager le cache Safari?
MISE À JOUR
Aha. Je viens de me rendre compte qu'il y a peut-être un moyen de faire cela.
je pourrais faire une nouvelle instance de NSURLCache
avec initWithMemoryCapacity:diskCapacity:diskPath:
, pointez le cache Safari, puis spécifiez une politique de cache de NSURLRequestReturnCacheDataDontLoad
pour la demande d'URL lors du chargement de la page.
Lorsque cela échoue, je pourrais simplement essayer de charger la page comme d'habitude. Je vais essayer et mettre à jour la question quand j'en sais plus.
Soupir. Je ne l'ai pas encore essayé, mais je suis à peu près certain que tu as raison. Cela aurait un sens complet. –
Une alternative est que Safari enregistre des copies des pages visitées dans l'historique afin que Spotlight puisse les rechercher. Pouvez-vous retirer ce dont vous avez besoin de cette façon? –