Pour l’iphone
Safari a de sérieuses limitations sur le cache. Yahoo! avait déjà débusqué les limites de la version iphone : les fichiers ne doivent pas dépasser 25 ko une fois décompressés et le total doit être strictement inférieur à 500 ko. Ces limitations semblent raisonnables pour un téléphone mais ce téléphone navigue souvent sur des sites classiques, avec une bande passante très réduite. Des objets de plus de 25 ko on en trouve malheureusement fréquemment, par exemple une grosse feuille de style. Bref, minifiez vos fichiers javascript et CSS, compressez vos images.
Vous trouverez aussi des sites vous parlant d’une limitation à 19 fichiers en cache sur l’iphone, mais j’ai clairement l’impression qu’il s’agit d’une mauvaise compréhension des premiers résultats. 19 c’est le nombre maximum de fichiers de 25 ko qu’on peut faire tenir dans moins de 500 ko (donc dans 499 ko). Si vos fichiers sont plus petits je m’attends à ce qu’il puisse y en avoir plus que ça en cache, mais je n’ai pas d’iphone pour tester.
Pour Safari 3
Là où c’est plus étonnant c’est que Safari 3 a lui aussi des limitations qu’on n’attendait pas. En particulier les objets supérieur à 104 ko (le double si vous avez plus de 1 Go de RAM) ne sont pas mis en cache. Contrairement aux 25 ko de l’iphone, on ne sera pas vraiment limité sur les CSS et le JS. Par contre il nous reste des gros fichiers qu’on aimerait en cache : principalement les grosses images et les animations flash. Et ce sont justement ces fichiers qui devraient être prioritaires dans le cache. Hors de question de recharger la grosse animation flash à chaque passage. Bref, la limitation est gênante.
Il y a tout lieu de penser que ce sera corrigé à l’avenir, en tout cas un bug a été soumis en ce sens. Visiblement le problème vient d’un framework qui gère la couche HTTP et pas de Safari/WebKit. Si quelqu’un est motivé, je suis curieux de savoir si la version Windows de Safari 3 ou les navigateurs webkit Linux souffrent du même problème.
Je peux te prêter mon iPhone pour tester si tu veux, ou tu n’as qu’à m’indiquer ce que je dois faire.