Mobile Browser-Cache-Limits: Android, iOS, webOS und
28. Juni 2010 um 8:45 Uhr von Ryan Grove | In Entwicklung , Leistung | 19 KommentareUpdate (12. Juli 2010): Während die Ergebnisse in diesem Artikel beschriebenen präzise für HTML-Seiten sind, haben neue Tests sehr unterschiedliche Cache-Grenzwerte für CSS und JS Ressourcen aufgedeckt. Die aktualisierten Ergebnisse sind in der Mobile Browser-Cache-Limits, Revisited .
Im Frühjahr 2008 schrieb Wayne Shea und Tenni Theurer eine YUI Blog-Post auf iPhone Cachefähigkeit , in denen sie die Ergebnisse der Forschung geteilt in verschiedene Merkmale und Grenzen von Mobile Safari-Cache in iPhone OS 1.x Unter anderem fanden sie, dass einzelne Komponenten größer als 25KB nicht zwischengespeichert wurden, und dass es eine maximale Cache-Größe von insgesamt zwischen 475KB und 500KB.
Seitdem hat sich viel verändert. Wir haben gesehen, zwei neue Major-Releases und viele kleinere Versionen des iPhone OS (jetzt iOS), und mehrere andere mobile Geräte mit sehr fähigen Browser erschienen, um das iPhone herauszufordern. Stoyan Stefanov gefunden, Ende 2009, dass der iPhone-Cache Grenzen verändert hatte (leider zum Schlechten). Aber wo kommen die Dinge jetzt stehen? Und was ist mit den Nicht-IOS-Browser?
Hintergrund
Browser haben zwei Arten von Caches, die wir mit für die Zwecke dieser Tests sind besorgt:
- Die Komponente Cache oder Cache-Objekt, speichert einzelne Dateien. HTML, CSS, JavaScript und alle Bilder in das Bauteil Cache zu gehen. Immer, wenn es eine dieser Komponenten muss der Browser überprüft zunächst den Cache, bevor sie eine Netzwerk-Anfrage.
- Die Seiten-Cache, der auch als Vor / Zurück-Cache genannt, speichert eine ganze Seite und alle seine Komponenten, sowie deren aktuellen Status. Wenn Sie das vor oder zurück-Taste verwenden, wird der Browser die Seite aus dem Seiten-Cache, wenn möglich zu laden.
Das HTML5-Anwendungs-Cache ist eine andere Art von Cache, die weitgehend von mobilen Browsern unterstützt wird. Browser-Hersteller bereits einen guten Job machen zu dokumentieren die Grenzen des Anwendungs-Cache, so dass ich es nicht in meinen Tests. Mehr über den Antrag später Cache.
Geräte getestet
Getestet habe ich die folgenden mobilen Browser / Plattform-Kombinationen:
- Android 2.1 (Nexus One)
- Mobile Safari auf iOS 3.1.3 (iPhone 1. Generation)
- Mobile Safari auf iOS 3.2 (iPad)
- Mobile Safari auf iOS 4.0 (iPhone 3G)
- Mobile Safari auf iOS 4.0 (iPhone 4)
- webOS 1.4.1 (Palm Pre Plus)
Hinweis: Mit Ausnahme der Mobile Safari auf iOS 4.0 testete ich nur ein Gerät in jeder Kategorie. Wenn es Unterschiede zwischen den einzelnen Geräten oder Unterschiede in installierter Software über das Betriebssystem basiert sind, würde meinen Tests nicht erkennen, diese Variationen. Diese speziellen Geräte wurden getestet, weil sie die, die ich für den Zugriff hatte bist, nicht, weil ich ihnen wichtiger zu sein als andere Geräte zu berücksichtigen.
Methodik
Cache-Test ist mühsam, aber relativ einfach.
Ich schrieb einen winzigen Sinatra app ( Gabel, die sie auf GitHub! ), die eine Antwort, bestehend aus einem angeforderte Anzahl von Pseudo-alphanumerische Zeichen und Leerzeichen erzeugt. Die Antworten können entweder serviert oder unkomprimierten gzipped werden. Die folgenden fernen Zukunft Ablauf-Response-Header gesendet werden, um sicherzustellen, dass alle Antworten berücksichtigt werden zwischengespeichert werden:
Cache-Control: max-age = 315360000 Gültig bis: Fr, 1. Mai 2020 03.47.24 GMT
In meinem lokalen Netzwerk, habe ich dann manuell die folgenden Schritte auf jedem Gerät, um die Komponente Cache-Test durchgeführt:
- Laden Sie den Cache-Test-Index-Seite.
- Tippen Sie auf einen Link zu einer Komponente von einer bestimmten Größe, angefangen von 5KB zu 20MB, und warten Sie, Beladung bis zum Ende.
- Tippen Sie auf die Schaltfläche Zurück.
- Tippen Sie auf den gleichen Link wieder. Beobachten Sie, ob die zufälligen Zeichen identisch sind, und ob der Server-Konsole druckt einen Log-Eintrag für einen Antrag, um festzustellen, ob die Komponente zwischengespeichert werden in Schritt 2 war.
- Wiederholen und passen Komponente Größen wie nötig, um die maximale Bauteilgröße, die zwischengespeichert wird bestimmen.
Um die Seite Cache zu testen, führte ich im Wesentlichen die gleichen Schritte, außer dass anstelle der Erschließung erneut auf den Link in Schritt 4, klopfte ich den Browser-Vorwärts-Taste, wodurch es zu den Seiten-Cache anstatt die Komponente Cache verwenden.
Unterstützung für ETag und Last-Modified wurde durch Optimierungen der Server, um die entsprechende Nachricht bestimmt ETag oder Last-Modified -Response-Header (in separaten Tests) und um die Zukunft weit-Ablauf-Header zu verzichten. Ich habe dann inspizierten die Request-Header vom Server empfangen, um sicherzustellen, dass der Browser die erwartete geschickt If-None-Match oder If-Modified-Since -Header auf Schritt 4.
Ergebnisse
Getestet habe ich mit gzip beide aktiviert und deaktiviert, aber ich fand, dass gzip keine Auswirkungen auf Cachefähigkeit auf jedem Gerät hatte. Die unkomprimierte Komponente die Größe kommt es in allen Fällen, unabhängig davon, ob diese Komponente bedient wird gzip. Als solche sind alle hier genannten Größen Komponente unkomprimierte Größe.
Die nachstehende Tabelle zeigt meine generellen Feststellungen.
| Browser / OS / Geräte- | Einkomponenten-Limit | Total Component-Limit | Seiten-Cache Size Limit | Unterstützt Last-Modified | Unterstützt ETag | Übersteht Power Cycle |
|---|---|---|---|---|---|---|
| Android 2.1 (Nexus One) | ~ 2MB (~ 2.048.000 b) | ~ 2MB (~ 2.048.000 b) | ∞ 2 | Ja | Ja | Ja |
| Mobile Safari, iOS 3.1.3 (iPhone 1. Generation) | 0b ein | 0b ein | ∞ 2 | Kein | Kein | Kein |
| Mobile Safari, iOS 3.2 (iPad) | 25.6KB (26214 b) | ~ 281.6KB (~ 288.354 b) | 25.6KB (26214 b) | Ja | Ja | Kein |
| Mobile Safari, iOS 4.0 (iPhone 3G) | 51.199KB (52428 b) | ~ 1.05MB (~ 1.100.988 b) | ∞ 2 | Ja | Ja | Kein |
| Mobile Safari, iOS 4.0 (iPhone 4) | 102.399KB (104.857 b) | ~ 1,9 MB (~ 1.992.283 b) | ∞ 2 | Ja | Ja | Kein |
| webOS 1.4.1 (Palm Pre Plus) 3 | ~ 1MB (~ 1.048.576) | ? | ~ 1MB (~ 1.048.576) | Kein | Kein | Ja |
Hinweise:
1 Mobile Safari auf iOS 3.1.3 scheint nicht alle Komponenten zwischenspeichern, unabhängig von Größe, mit Ausnahme des Seiten-Cache. Es ist unklar, ob dies absichtlich oder um einen Bug handelt.
2 Die Seite Caches in Android 2.1, iOS 3.1.3 und iOS 4.0 (aber nicht iOS 3.2) scheinen nur durch den verfügbaren Arbeitsspeicher begrenzt werden, wenn es um individuelle Seitengröße kommt. Ich habe nicht versucht, genau zu bestimmen, wie viele einzelne Seiten konnten in der Seiten-Cache auf einmal nebeneinander bestehen.
3 webOS Testergebnisse waren inkonsistent und an verschiedenen Punkten der Cache schien ganz aufhören zu arbeiten, bis das Telefon-und wieder eingeschaltet wurde. Ich halte diese Ergebnisse schlüssig oder gar vertrauenswürdig, aber sie sind hier aus Gründen der Vergleich gelistet.
Androide
Der Android-Browser zeigte die beste Cache-Verhalten aller Geräte getestet. Während es keine Grenze für die Größe der einzelnen Komponenten auferlegt wird, scheint die Cache-Größe auf etwa 2 MB beschränkt werden, was bedeutet, dass die einzelnen Komponenten wirksam zu 2 MB, beschränkt.
Die Seiten-Cache schien keine Grenze für die Größe der einzelnen Seiten zu verhängen, glücklich jedes Byte Caching ich es warf, bis der verfügbare RAM erschöpft war und der Browser abgestürzt ist.
Ich war angenehm überrascht, dass Android die Komponente Cache beide Browser neu gestartet und Macht Zyklen überstanden, war ein Kunststück, keiner der iOS-Geräte in der Lage, um zusammenzupassen.
Mögliche Einschränkung: Eine Überprüfung der Android WebKit-Source-Tree führt mich zu glauben, dass ihre Grenzen Cache kann bezogen auf die Menge an RAM und / oder Flash-Speicher auf dem jeweiligen Gerät, auf dem es läuft anzupassen. Wenn das stimmt, kann diese Zahlen nur anwendbar auf dem Nexus One. In der Tat, wenn der Cache-Größe auf ungenutzten Speicher anstatt Gesamtspeicher anpaßt, kann diese Zahlen nur dann anwendbar, meine Nexus One.
Ich könnte falsch sein, aber die Unterschiede in den Testergebnissen iOS 4.0 auf dem iPhone 3GS und iPhone 4 unterstützen diese Theorie. (Android und Mobile Safari sind sowohl WebKit-basierten Browsern, so dass sie dieses Verhalten gemeinsam haben.) Wenn Sie sich mit dem WebKit-Quelle sind und kann mehr Licht in diese Schuppen, nehmen Sie bitte mit mir in Verbindung.
iOS
Die Ergebnisse variierten wild über die drei neuesten Versionen von iOS. Erstaunlicherweise hat Mobile Safari auf iOS 3.1.3 nicht zwischenspeichern Komponenten jeder Größe, obwohl sie eine scheinbar unbegrenzte Seite Cache-Größe. Dies ist beunruhigend, da heißt es iOS 3.1.3 Benutzer werden wahrscheinlich immer eine suboptimale Browsing-Erlebnis, besonders wenn sie benutzen kein wifi. Die unbegrenzte Seite Cache-Größe tut wenig gut hier, denn es kommt nur ins Spiel, für Vor / Zurück-Navigationen. Dieses Verhalten ist eine signifikante Veränderung aus, was andere beobachtet in früheren IOS-Releases und ich kann mir keinen guten Grund dafür, weshalb ich vermute, dies könnte ein Fehler sein.
Mobile Safari auf iOS 3.2 (die nur auf dem iPad) zeigt nicht diesen Fehler. Seine 25.6KB Komponente Limit und ~ 281.6KB Gesamt-Cache Limit sind besser als nichts, aber sie scheinen immer noch dürftig im Vergleich zu den anderen Geräten getestet. Einzigartig unter den iOS-Geräten erscheint das iPad, um die Größe der Seiten in der Seiten-Cache zu begrenzen, um 25.6KB, das gleiche wie seine Bestandteile Größenbeschränkung.
Mobile Safari auf iOS 4.0 ausgestellt unterschiedliche Grenzen auf dem iPhone 3GS und auf dem iPhone 4, was bedeutet, dass die Grenzen der verfügbaren RAM (das iPhone 3GS verfügt über 256 MB, während das iPhone 4 hat 512 MB; beide Geräte getestet hatte 32 GB Flash-Speicher) anzupassen gründet, setzt . Auf dem iPhone 3GS, iOS 4.0 hat eine Größenbeschränkung 51.199KB Komponente und eine ~ 1.05MB insgesamt Komponente Cache-Größe.
Auf dem iPhone 4 war die Komponente Größenbeschränkung fast genau zwei Mal die Grenze auf dem iPhone 3GS, bei 102.399KB. Die gesamte Komponente Cache-Größe lag bei ca. 1,9 MB. Vielleicht, weil iOS 3.2 und iOS 4.0 separat entwickelt wurden, sondern verzweigt von einem gemeinsamen Vorfahren, erscheint das iOS 4.0 Seite Cache-Größe nur durch den verfügbaren Arbeitsspeicher auf beiden Geräten getestet, genauso wie iOS 3.1.3 begrenzt werden.
Keine der iOS-Geräte erhalten die Inhalte des Cache über erzwungene Browser neu gestartet oder das Gerät Macht Zyklen, obwohl sie den Cache habe nur bewahren, wenn Switching-Anwendungen, ohne tatsächlich zu töten Sie den Browser.
webOS
Meine Testergebnisse waren so auf webOS inkonsequent, dass ich wenig Vertrauen zu ihnen haben. Ich habe aufgenommen, was ich nur wenige Daten zu sammeln, rein aus Gründen der Vollständigkeit verwaltet. Bitte nehmen Sie es mit einer saftigen Körnchen Salz.
Soweit ich feststellen können, war, könnte webOS haben eine individuelle Komponente Größenbeschränkung von ca. 1MB, mit einer passenden Seite Größenbeschränkung in der Seiten-Cache. Ich konnte Koax- If-None-Match oder If-Modified-Since -Anfrage-Header von webOS, so dass es nicht unterstützt impliziert ETag und Last-Modified .
Bei einigen Tests stellte sich heraus, dass die maximale Komponente webOS Größe von mehr als 1MB war, aber das war inkonsistent. Soweit ich das beurteilen kann, erscheint webOS auf einen fiesen Bug, bei dem haben, nachdem eine bestimmte Punkt-möglicherweise, wenn die maximale Cache-Größe insgesamt erreicht-die Cache wird gerade komplett aufhört zu arbeiten zusammen, bis sich das Telefon-und wieder eingeschaltet. In einigen Fällen sogar Macht Radfahren nicht fix den Cache zu Bruch, so dass ich schließlich aufgegeben hat, um die genaue Ursache des Problems und die genauen Grenzen des webOS-Cache einzurichten.
Empfehlungen
Basierend auf diesen Ergebnissen, biete ich folgende Empfehlungen an jedermann die Entwicklung von Webanwendungen für die getesteten Geräte:
- Verwenden Sie far-future-Cache Ablauf-Header. Dies wird der Browser mit, um eine bedingte GET-Anfrage zu senden und wird in Cachefähigkeit webOS, der nicht die Verbesserung verhindern
ETagoderLast-Modified. - Zumindest solange, bis iOS 4.0 kommt auf dem iPad, versuchen, einzelne Komponente Größen zu 25.6KB oder weniger zu begrenzen, unkomprimiert. Und fordern Sie Ihre iPhone-Nutzer auf iOS 4.0 so schnell wie möglich aktualisieren.
- Wenn Ihre Website iOS 3.1.3 Nutzer (was wahrscheinlich ist) unterstützen müssen, wenn sie größer sind als Komponenten 25.6KB erfordert, oder wenn die Gesamtgröße all Ihrer Komponenten ist größer als 281.6KB, sollten Sie die HTML5-Anwendungs-Cache, localStorage , oder die Speicherung in Datenbanken zu speichern Sie Ihre Komponenten. Alex Kessinger neueste YUI Blog-Post, Einführung in die Nutzung YUI 3 im Offline-Anwendungen , könnten von Interesse für YUI 3 Entwickler der Prüfung dieses Ansatzes sein.
- Machen Sie Ihre eigene Tests. Sie nicht davon aus, dass diese Ergebnisse für alle künftigen Version von jedem der getesteten Browsern oder Geräten anwenden. Mit diesen Ergebnissen als Ausgangspunkt, sondern überprüfen sie sich, bevor Sie wichtige Entscheidungen auf Annahmen über mobiles Cache Einschränkungen basieren machen. Die mobilen Browser Welt verändert sich in einem Blitz-Tempo, so dass diese Forschung wird eine sehr kurze Haltbarkeit.
Ich habe mein Test-Code verfügbar auf GitHub gemacht und ich ermutige Sie, es zu benutzen, sie berappen, und teilen, was du lernst.
Aufruf zur Dokumentation
Browserhersteller, beachten Sie bitte die Dokumentation und Veröffentlichung von den Cache Ihres Browsers Grenzen. In der Desktop-Welt, wo diese Grenzen sind typischerweise so hoch, dass kein Thema ist, wurde Dokumentation nicht erforderlich. In der mobilen Welt, sind Browser-Cache Grenzen lebenswichtige Informationen, dass Web-Entwickler müssen, um performante Websites mit überzeugenden Eigenschaften zu schaffen.
Die Grenzen der neuen Features wie localStorage und Anwendungs-Cache werden in der Regel gut dokumentiert. Ergänzen Sie bitte diese Ebene der Dokumentation zu dem Bauteil-Cache als auch.
Teilen und zu erweitern: Lesezeichen mit del.icio.us | Digg it! | reddit!
19 Kommentare
Leider ist die Kommentarfunktion zu diesem Zeitpunkt geschlossen.

Copyright © 2006-2012 Yahoo! Inc. Alle Rechte vorbehalten. Datenschutz - Allgemeine Geschäftsbedingungen
Präsentiert von WordPress auf Yahoo! Web Hosting .

Great stuff, vielen Dank für dies zu tun, Ryan!
Während des Wartens auf die Verkäufer auf Ihren Anruf für docs hören, wäre cool, haben diese Prüfungen hinzugefügt, um browserscope.org. Freiwillige? :)
Kommentar von Stoyan - 28. Juni 2010 #
Vielen Dank für die Veröffentlichung dieser Ergebnisse! Ich lief eine ähnliche Studie auf meinen eigenen vor kurzem und wurde auch von Android, wie handhabt zwischengespeichert Komponenten, die auch nach Macht wurde das Telefon radelte überlebt beeindruckt.
Ich fand auch in meiner Studie, dass es entscheidend ist, die Unterscheidung zwischen Speicher-Cache und "disk" Cache, von denen die letztere eine vollständige Browser neu starten oder einen Power Cycle überlebt zu machen. Cache-Speicher im Speicher befindet, während der Benutzer von Seite zu Seite browst, und ich fand, dass die Komponente Größe für diesen Anwendungsfall viel größer ist (Getestet habe ich bis zu 2 MB Größe Komponente). Mit Cache-Control, weit in die Zukunft Ablauf, und die Entfernung von Etags, Surfen von Seite zu Seite weder Safari noch mobiler Android eine Rundfahrt mit dem Server machen würde. Nach ein paar Minuten würde aber beide Browser machen eine Rundfahrt um den Status der größten Komponente (in diesem Fall 2MB), und dem Server zu überprüfen wäre sendet einen 304, was darauf hinweist, dass die Datei immer noch mit Wohnsitz in der Client-Speicher. Im Laufe von mehreren Minuten der Browser weiterhin das für jede Komponente zu tun, in absteigender Reihenfolge nach, um die Größe der Komponente.
Ich habe die Forschung für eine TechPulse Papier, aber ich werde sehen, ob ich besser organisieren können meine Erkenntnisse und zu veröffentlichen.
Ein letzter Gedanke: Es könnte interessant sein, eine Studie von Android 1.5 ein 1,6 zu sehen, wie diese leider die Mehrheit der Android-Nutzer repräsentieren. Diese Benutzer repräsentieren knapp über 50% der Android-Nutzer nach aktualisierten offiziellen Statistiken in der Android-Dokumentation (sorry kann ich nicht bieten den Link right now). Von dem, was ich verstehe das sehr viel mehr Benutzer im Vergleich zu Nutzern von webOS repräsentiert, so eine erweiterte Studie von nur Android 1.5/1.6 wäre wahrscheinlich mehr relevant.
Schließlich ist Entschuldigungen wie mein Laptop in der Werkstatt und ich schreibe dies auf meinem iPhone. Ich wahrscheinlich verdient eine Medaille oder so etwas!
Kommentar von David Calhoun - 28. Juni 2010 #
Doh, ich vergaß zu erwähnen, dass ich nicht denke, es ist ein Zufall, dass das iPhone so schrecklich mit Caching (Zwischenspeicherung traditionellen, im Gegensatz zu neueren Caching-Techniken dagegen). Ich denke, sie haben das getan, gezielt mit Gewalt schieben Sie den Umschlag, so wie sie schon mit Flash-Unterstützung nicht getan. Es ist im Grunde zwingt die Entwickler lernen, wie man den Cache zu manifestieren und lokalen Speicher verwenden, so wie das Entfernen von Flash-Entwickler gezwungen hat, zu lernen, wie man neue CSS3 verwandelt und Animationen verwenden.
Kommentar von David Calhoun - 28. Juni 2010 #
Es gibt einen kleinen Tippfehler in "beide Geräte getestet hatte 32 MB Flash-Speicher", lesen sollten 32GB.
Danke für die aktualisierten Ergebnisse, das ist wirklich hilfreich!
Kommentar von Nicolas - 28. Juni 2010 #
@ Stoyan: Tolle Idee!
@ David: Interessante. Ich habe nicht viel Zeit lassen, um zwischen meinen Zugriffe passieren, so dass ich gar nicht bemerkt, die Validierung Anfragen, die Sie beschreiben. Ich würde gerne den Rest Ihres Ergebnisse zu sehen.
@ Nicolas: Guter Fang. Ich habe den Beitrag mit der Korrektur aktualisiert. Vielen Dank!
Kommentar von Ryan Grove - 28. Juni 2010 #
Ich kann bestätigen, das Fehlen eines Cache auf webOS. Diese Sache wird nicht einmal eine einfache Seite zwischenspeichern (wie dieser) zuverlässig. : (
Kommentar von Richard - 28. Juni 2010 #
Nice work Ryan
Kommentar von Philip Tellis - 28. Juni 2010 #
Große Artikel! Danke Ryan.
Aber ich habe es ausprobiert, für meine "3G/3GS auf 3.1.3", schienen sie ordnungsgemäß zwischenspeichern Ressourcen.
Sie bedeutete "erste Generation iPhone" als 2G iPhone, nicht wahr?
Ich denke, dass auch auf OS 3.1.3, 3G/3GS sich anders verhalten als 2G (1. Generation).
Ich hoffe, das könnte helfen.
Kommentar von Duane - 29. Juni 2010 #
So hat die besten Android-Browser und sogar Flash. FU iPaid!
Dank Ryan, schöne Arbeit und sehr nützlich.
Kommentar von Felix Nagel - 29. Juni 2010 #
Tolle Arbeit, aber ich denke, das ist nicht ein guter Test. Benutzer nur selten zu einem bestimmten IMG oder Stylesheet-URL klicken - statt, navigieren sie über mehrere Seiten. Relevanter zu sein, sollte der Test an, wie der Cache-Verhalten bei typischen Web-Workflows zu suchen. Ähnlich wie bei David, rannte ich Tests auf mobilen Safari, die großen Ressourcen (> 1MB) zwischengespeichert wurden, wie ich auf verschiedenen Seiten navigiert zeigte. Dies ist eine weitere typische Anwender-Szenario. So scheint es verfehlt zu sagen iPhone 3 Caches nur 52K, zum Beispiel. Zumindest brauchen wir eine weitere Spalte. Es ist toll, dass der Code bis auf Github ist, aber es wäre besser, wenn Sie eine gehostete Version des Tests, dass die Leute könnten versuchen musste. Gute Arbeit - aber ich glaube nicht, das klärt, was echten Benutzern erleben. Pingen Sie direkt mit mir und wir können Rahmen aus einer gründlicheren Test-Design.
Kommentar von Steve Souders - 29. Juni 2010 #
@ Steve: Ich würde gerne mehr über Ihre Erkenntnisse und Ihre Ideen zur Verbesserung der Testmethodik zu hören. Ich Ihnen eine Email zugesandt.
Kommentar von Ryan Grove - 29. Juni 2010 #
"Die Seiten-Cache schien keine Grenze für die Größe der einzelnen Seiten zu verhängen, glücklich jedes Byte Caching ich ihn warf, bis der verfügbare RAM erschöpft war und der Browser ist abgestürzt."
Ist dieses Verhalten wünschenswert abstürzt? Haben sich die Browser auf iOS und WebOS auch abstürzen? Allein der Gedanke, desto mehr geizig Cache ausgelegt sind vielleicht zu Absturz zu begrenzen, kann ich mich nicht erinnern, jemals mit Mobile Safari Absturz auf mich.
@ Felix, wie stehen diese Ergebnisse bedeuten, Android hat das "beste Browser?" Es gibt viel mehr zu "besten" als nur das Caching-Verhalten.
Kommentar von Dai - 30. Juni 2010 #
@ Dai: Ein Crash ist nie wünschenswert, aber in diesem Fall dauerte es Komponenten von 5MB oder größere Probleme zu verursachen. Mobile Safari auf dem iPhone der 1. Generation tendenziell Fragen rund 5 MB haben, und auf den 3GS ca. 10MB, aber ich war nicht in der Lage, um es zu auf dem iPhone 4 auch bei 20MB abstürzen. Android auf dem Nexus One eher beginnen die Probleme rund 10MB. webOS erschien, um die Größe der Seiten-Cache zu begrenzen und nicht wie die anderen zum Absturz bringen, aber als ich in dem Artikel schrieb, hatte es Probleme für sich.
Da die Tests beteiligt Anzeigen der heruntergeladenen Daten, würde dies zu Speichernutzung beigetragen haben. Ich würde nicht erwarten das gleiche Verhalten mit Ressourcen, die nicht angezeigt werden, oder die sich lediglich auf das Dateisystem heruntergeladen.
Kommentar von Ryan Grove - 30. Juni 2010 #
In Bezug auf iOS und das iPhone, iPad und iPod Touch: Verwenden Sie iCab.
Der Browser iCab hat DAS BESTE MOBILE Browser-Cache auf jedem mobilen Plattform. Es speichert ganze Webseiten, so dass nichts muss neu heruntergeladen werden. Sie können auswählen, welche Web-Sites ganze Webseiten speichern. Es verfügt über Tabs und andere Funktionen zu machen, ähnlich wie bei einem Desktop-Browser.
iCab.
Das ist die Antwort auf eine sehr befriedigende Erfahrung Web-Browsing.
Kommentar von James Katt - 1. Juli 2010 #
Hallo! Vielen Dank für eine Überprüfung. Da es viele andere Browser im Android Market neben einem Lager eins sind, ich denke, ist es sinnvoll, andere weit verbreitete Browser wie Dolphin [HD] zum Beispiel zu testen. Vor kurzem habe ich bemerkt, dass Dolphin eine Option Caching Zeug auf SD-Karte enthalten ...
Kommentar von Vladimir Kelman - 2. Juli 2010 #
Ich lobe deine Mühe und Arbeit, sondern auch Ryan echo Steves Kommentare. Wir freuen uns auf das, was ihr Jungs zu produzieren.
Beachten Sie sicher sind, ob Sie sich bewusst sind: Der Android Browser den Festplatten-Cache-Algorithmus ist nicht wirklich in der WebKit-Repo (die Vernetzung für den Browser wird von der Java-Schicht behandelt nicht die WebKit-C / C + +-Schicht). Schauen Sie sich in CacheManager.java http://bit.ly/azhsGH . Der Algorithmus ist etwa, dass alle 5 Netzwerk-Zugriffe, wenn die Festplatten-Cache ist größer als 6 MB wird sie beschnitten. Sie können auch sehen, die ständige CACHE_MAX_SIZE, die die Größe der Festplatte zwischengespeichert Komponenten beschränkt auf 2MB wie Ihre Forschung gefunden. Ich wäre nicht überrascht, wenn der Absturz erlebt man auf dem Trimm 6MB Grenze in Zusammenhang stehen könnten werden. (Seltsamerweise weiß ich, weil ich selbst einmal eine Caching-Bug in der OS-Quelle für einen Kunden zu beheben.)
Wie auch immer, wie ich sicher bin, Ihnen bewusst sind, was bedeutet, dass in der Praxis ist, dass es schwierig sein kann, Reverse-Engineering der genaue Cache-Grenzwerte (zB für Android, können Ihre Ergebnisse unterscheiden sich je nachdem, ob Sie die fünfte Netzwerk Anfrage waren oder nicht - wer weiß, was die iPhone-Algorithmus ist), obwohl einige brauchbare Richtlinien zu entziffern, wie Sie es hier getan und fragten Hersteller zu veröffentlichen ist immer noch nützlich.
Kommentar von Ishan Anand - 2. Juli 2010 #
@ Ishan: Danke für die zusätzlichen Android Details! Das ist sehr hilfreich. Steve und ich arbeiten derzeit an einigen neuen Tests und hoffen, dass wir zu mehr Licht auf diese bald zu vergießen.
Kommentar von Ryan Grove - 2. Juli 2010 #
Ich bin auch neugierig, wenn die UIWebView ein in einem iOS-Anwendung beinhalten kann, hat die gleichen Grenzen wie Mobile Safari. Ein stackoverflow Frage zeigt HTML5 Cache manifestiert sich in einem UIWebView funktioniert nicht.
Kommentar von Kevin Hakanson - 6. Juli 2010 #
Vielen Dank für die Veröffentlichung dieser Ergebnisse! Es ist im Grunde zwingt die Entwickler lernen, wie man den Cache zu manifestieren und lokalen Speicher verwenden, so wie das Entfernen von Flash-Entwickler gezwungen hat, zu lernen, wie man neue CSS3 verwandelt und Animationen verwenden.
Kommentar von Technologie-Blog - 18. Juli 2010 #