29 votes

iPhone UIWebView chargement lent des fichiers HTML locaux

Je développe une application qui nécessite la mise en cache de pages web (complètement) avec leurs fichiers CSS et leurs images après avoir sauvegardé l'ensemble du HTML de la page (en passant par les liens pour stocker chaque fichier avec le fichier HTML).

Lors de l'affichage du fichier HTML hors ligne, UIWebView prend beaucoup de temps pour charger la page, étant donné que je suis déjà hors ligne et que le fichier se trouve sur le disque avec ses CSS et ses images.

J'utilise ce code pour charger le fichier :

  NSData *htmlData = [NSData dataWithContentsOfFile:htmlFilePath];
  [wView loadData:htmlData MIMEType:@"text/html" textEncodingName:@"UTF-8" baseURL:[NSURL fileURLWithPath:self.htmlFolderPath isDirectory:YES]];

Existe-t-il un autre moyen de charger le fichier dans l'application UIWebView qui peut le charger plus rapidement ?

P.S : il se charge très rapidement sur le simulateur (hors ligne) mais sur l'appareil il prend beaucoup de temps (compte tenu du fait qu'il s'agit d'un fichier déjà mis en cache hors ligne).

Merci de votre aide.

0voto

FreelanceAr Points 519

Juste au cas où quelqu'un me ferait le même coup...

J'avais une UIWebView qui chargeait une chaîne html et toutes les ressources (js et css) étaient stockées localement.

J'ai constaté que le chargement du contenu avec une connexion internet était assez lent (1 ou 2 secondes pour charger et afficher la vue web dans mon contrôleur) mais lorsque j'ai essayé de charger la même page SANS connexion internet, c'était rapide, vraiment rapide.

Je me suis souvenu que mon modèle HTML contenait ceci au début <base href="http://somesite.com" /> que j'ai utilisé pour charger des images avec des chemins relatifs dans certains contenus.

Supprimer ce travail comme un charme. Cela peut donc ralentir le chargement de votre site web, même si vous n'avez pas de référence à un contenu externe dans votre code HTML.

0voto

Arshad Shaik Points 178

Même dans mon cas, le chargement de fichiers html locaux dans webview prenait trop de temps.

Essayez de charger les fichiers html locaux comme ci-dessous, cela a fonctionné pour moi :

NSString *htmlFile = [[NSBundle mainBundle] pathForResource:@"website_and_mobile_tnc-1" ofType:@"html"];
NSString* htmlString = [NSString stringWithContentsOfFile:htmlFile encoding:NSUTF8StringEncoding error:nil]; 
[_TandCView loadHTMLString:[headerString stringByAppendingString:htmlString] baseURL:nil];

Si vous voulez charger en utilisant NSData, essayez de faire en sorte que baseUrl soit "nil" dans votre code.

J'ai modifié votre code comme suit,

    NSData *htmlData = [NSData dataWithContentsOfFile:htmlFilePath];
  [wView loadData:htmlData MIMEType:@"text/html" textEncodingName:@"UTF-8" baseURL:nil];

Je n'ai pas essayé, mais je vous invite à le faire et à me le faire savoir.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X