Warum macht Chrome Zeit verbringen "herunterladen" Inhalte aus dem cache?
Ich bin statischen Inhalte werden vom browser zwischengespeichert, auf unbestimmte Zeit. Chrome Zwischenspeicherung ist es wie erwartet, aber ist immer noch Zeit zu verbringen "herunterladen" können. Ich bin mit Chrome 46.0.2490.71.
Wie Sie sehen können, die Inhalte aus dem cache bedient, aber immer noch nimmt 68ms zum herunterladen von Inhalten. Dadurch verursacht wird, dass die svg-Bilder zu flash auf jeder Seite geladen, obwohl die Datei zwischengespeichert wird.
Hier ist der entsprechende Zeitleiste, die Informationen aus einem laden der Seite in den Inkognito-Modus:
"Total Zeit" und "Ereignis-Zeit" - Felder für jedes dieser Ereignisse ist gleich null. Replizieren diese mit der Datei, die lokal bedient (aber noch aus dem cache), die "Empfangen von Daten" - Ereignis nur einmal gesehen.
Ein paar interessante Punkte zu beachten:
- Mit der gleichen Datei von meiner lokalen Maschine, mit der gleichen Codierung, produziert nicht die gleichen download-Verzögerung.
- Wechsel zu den Inkognito-Modus (keine Erweiterungen) halbiert die download-Verzögerung, aber nicht beseitigen.
- Es ist schneller, um die Seite zu aktualisieren, wie es scheint, nehmen weniger Zeit, um zu erhalten eine 304 Antwort vom server, als nur laden Sie es aus dem cache.
- Schließen die dev tools nicht angezeigt wird, um eine Wirkung auf die Verzögerung.
- IE 11, Edge, Firefox und 41 zeigen keine Verzögerung.
Welche möglichen Ursachen könnte es geben?
- Welche Erweiterungen hast du geladen? Die meisten Erweiterungen funktionieren nicht im Inkognito -...
- Dies ist wahrscheinlich verursacht durch eine Erweiterung die Sie installiert haben. Viele Male, verursachen Sie seltsame Fehler wie diese, denn Sie haben Zugang zu vielen Dingen im code/browser... ich habe nie in diese, und ich benutze devtools alle die Zeit zu Messen, meine Websites " - performance, so dass ich nicht denke, das ist ein chrome-bug. Versuchen Sie einfach, Sie zu deaktivieren, und Sie, so dass Sie eins nach dem anderen.
- Um ehrlich zu sein, ich glaube nicht, dass 67ms ist unrealistisch für die be-142kb von der Festplatte.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Also dies hat zu tun mit der Art, wie caching funktioniert in Chrome. Ich habe keine persönliche Erfahrung mit Chrome Codebasis, aber ich weiß ein bisschen über die Theorie dazu. (Ich fand auch einen Verweis auf Chrome cache Umsetzung hier für die ganz neugierigen: Chrom-disk-cache)
Referenz, hier ist ein screenshot von meinem laden Ihre eigentliche Stack Overflow Frage in Chrome mit dem Netzwerk " öffnen und die Netzwerk-Throttling-option auf "Offline". Beachten Sie, dass jeder einzelne Eintrag in dieser Liste ist aus cache!
Werden Sie auch feststellen, dass Chrome ist Zeit zu verbringen "herunterladen" jeder Datei. Warum ist das so? Gut, Chrome-im cache-Datenbank, und die Datenbank ist auch komprimiert, um Speicherplatz zu sparen. Beim abrufen eines Dokuments aus dem cache, der Preis retrieval ist nicht null. Chrome hat zu schauen, bis das Element in der cache-Datenbank, und bläst dann, dass der Eintrag in den Speicher, sodass Chrome kann mit ihm arbeiten. Ich weiß nicht, die genauen details darüber, wie das Netz den chrome-dev-tools-Bedienfeld zeigt Zeit, aber ich würde vermuten, dass, immer, dass die Datei von der Festplatte Dekomprimieren, und dann analysieren und arbeiten mit dem Ergebnis ist, was Sie sehen, reflektiert in "der Zeit heruntergeladen."
Kann ich nicht kommentieren, warum die anderen Browser nicht auch haben diese Verzögerung, da habe ich nicht viel Erfahrung mit Ihnen. Es könnte sein, dass Sie entweder eine effizientere Methode, sich Dinge aus dem cache (möglich), oder es könnte sein, dass Sie den cache im Speicher behalten (unwahrscheinlich), oder dass Sie überspringen einige der Integrität überprüft Chrome macht auf den cache-Daten (mögliche)
Ich stieß auf das gleiche Problem. Ich implementierte PDF-Download-Funktion. nach anklicken der download-link bekam ich Antwort in etwa 260 ms aber Download startet nach 10 Sekunden auf chrome.
UPDATE:- habe ich analysiert, dass mein windows-system war 64 bit und Google chrome als 32-bit. Nach der Aktualisierung von chrome für 64 bit, das Problem war gelöst.
Ich fand die Auflösung bei https://bugs.chromium.org/p/chromium/issues/detail?id=103737
Wenn ich den pass header("Content-Length: xxx") lädt es, wie 100% schneller!
Ich hatte das gleiche Problem, Download von cache dauerte eine gefühlte Ewigkeit.
Problem war, dass meine Datei hatte eine gzip-Größe 410 KB (das ist schon groß)
Entpackt es hat eine Größe von 1,5 GB, sodass der browser verwendet so viel Zeit für das laden aus dem cache, dann entpacken Sie es.
Mit der neuesten chrome-dev-tools sehen Sie die entpackte Größe:
Ich lief in ein ähnliches "problem". Doch die unerwartete Verzögerung verschwunden, sobald ich lud meine Seite (mit der "slow-to-retrieve-from-disk-cache" dependencies) in einem Inkognito-Fenster mit DevTools geschlossen. Dies lässt mich vermuten, dass entweder das problem wurde durch die Interferenz von entweder einer Chrome-Erweiterung oder aus dem DevTools Fenster.