Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Netzwerke>Warum hat Safari eigentlich `ne Bremse?

Warum hat Safari eigentlich `ne Bremse?

Nutriaschädel
Nutriaschädel28.06.0505:53
Moin alle zusammen!

Meine Frage bezieht sich die lezte MTN-Meldunge bezüglich "SafariSpeed 1.3" (& Co.) :

1. Wozu dient denn diese Verzögerung eigentlich? Ich meine, Apple wird ja wohl einen Grund dafür haben, sowas einzubauen.

2. Was bringt mir "SafariSpeed 1.3" denn nun wirklich?

3. Nur am Rande bemerkt: Wieso kann ich manche Seiten zeitweise nicht mit Safari öffnen, aber mit MS Explorer (igitt), oder z.B. Opera zur gleichen Zeit schon?

Fragen sind das...O:-):-yO:-)

0

Kommentare

underworld28.06.0507:28
1.
2. Nichts
3. Weil die Programmierer der Site für den IE optimiert hatten oder weil sie Browserchecks haben, die nicht auf Safari checken und Opera sich als IE ausgibt oder weil Safari ein paar Features nicht kann, die die Site verwendet (was im Endeffekt wieder Schuld der Programmierer ist)
0
MacMark
MacMark28.06.0513:23
Nutriaschädel

Die Verzögerung dient dazu, die Seite erst anzuzeigen, wenn alle Informationen geladen sind. Pauschal geht Safari von 1 Sekunde dafür aus, egal wie lange es tatsächlich dauert. Wenn Teile fehlen, beispielsweise Layoutinformationen eines externen Stylesheets, dann ändert sich das Aussehen der Seite während des Ladens.

Man kann die Verzögerung einstellen. Bringt man sie auf 0.0001 Sekunden beispielsweise, dann zeigt Safari sofort alles an, was er gesaugt hat. Das "Tool" benutzt dazu intern mutmaßlich den OS X Defaults-Befehl, der auch im Terminla verfügbar ist:
Kopieren & Einsetzen im Terminal:
defaults write com.apple.Safari WebKitInitialTimedLayoutDelay 0.0001
Dies setzt die Verzögerung auf eine Zehntausendstelsekunde. Der Standardwert ist 1.0 Sekunden. Man kann mit den Werten experimentieren, indem man die Zahl austauscht. Safari nutzt den neue Wert erst beim nächsten Start von Safari.
Mit Kopieren & Einsetzen im Terminal:
defaults read com.apple.Safari WebKitInitialTimedLayoutDelay
kann man sich den aktuellen Wert anzeigen lassen.

Welche Seiten kannst Du mit Safari nicht öffnen? Wenn es nur zeitweise nicht geht, dann ist es kein grundsätzliches Problem.
„@macmark_de“
0
stiffler
stiffler28.06.0513:33
Mit Safari (2.0) lassen sich in der Tat so einige Seiten nicht mehr nutzen.
Das bezieht sich jedoch in meinem Fall nicht auf Browserweichen oder browserabhängige Scripte, sondern offenbar auf einen Bug im Safari.

Sehr oft bricht Safari die (spez. https-) Verbindung zu Servern einfach ab und meldet einen Fehler. Aufgefallen ist es mir schon sehr oft in den internen Bereichen von CortalConsors sowie bei 1&1 und Schlund.
Mit anderen Browsern und Safari in einer 1er Version funktioniert es hingegen wie erwartet.
„To understand recursion you need to understand recursion“
0
Mila
Mila28.06.0513:40
MacMark: Danke für diese kurze und Lexikon-reife Erklärung. Ich starte dann mal das Terminal.;-)
0
Hot Mac
Hot Mac28.06.0513:48
"Safari Speed" suggeriert lediglich eine Beschleunigung beim Laden der Seite, da diese schneller angezeigt wird.
Es ist aber so, daß die "komplette" Seite nicht schneller geladen wird, eher das genaue Gegenteil ist der Fall.
Ich habe das mal vor einiger Zeit getestet.
Safari lädt die "komplette Seite" mit der Standardeinstellung schneller.
Natürlich habe ich vor jedem Test den Cache geleert.

Wo wir gerade dabei sind:
Safari zeigt seit heute folgende Seite nicht mehr an @@ diabetes-muenchen.de
Ein Bekannter von mir kommt mit dem IE auf der Dose problemlos drauf.
Was kann denn da los sein ?
0
kacheng
kacheng28.06.0514:14
Beim Einsetzen im Terminal gibt er mir:
The domain/default pair of (com.apple.Safari, WebKitInitialTimedLayoutDelay) does not exist
0
MacMark
MacMark28.06.0514:17
Hot Mac

Wenn Du den User-Agent im Safari Debug-Menü auf IE stellst, dann kommt kein Fehler. diabetes-muenchen.de sperrt absichtlich aus. Viele Browser geben sich standardmäßig als IE aus.

Einschalten des Debug-Menüs mit
defaults write com.apple.Safari IncludeDebugMenu 1
Ausschalten mit
defaults write com.apple.Safari IncludeDebugMenu 0
„@macmark_de“
0
MacMark
MacMark28.06.0514:23
kacheng
Beim Einsetzen im Terminal gibt er mir:
The domain/default pair of (com.apple.Safari, WebKitInitialTimedLayoutDelay) does not exist

Dann stimmte die Eingabe wohl nicht. Mach mal ein Screenshot von der Eingabe im Terminal und der Ausgabe.
Apple-shift-4, Leertaste, Maus über Terminal, Klick.
„@macmark_de“
0
Hot Mac
Hot Mac28.06.0514:26
MacMark

Vielen Dank !
Funktioniert !
Warum sperren die den erst seit heute aus ?
Ich bestelle da immer regelmäßig Kleinkram für meine Mutter.
Seltsam, die scheinen an der ursprünglichen Form der Seite nichts verändert zu haben. Immer diese Ärzte.
0
kacheng
kacheng28.06.0514:38
Hier der Screenshot
0
MacMark
MacMark28.06.0514:49
kacheng
Hier der Screenshot

Hast Du 10.3.1 und Safari 2.0?
„@macmark_de“
0
kacheng
kacheng28.06.0514:52
Ne, 10.4.1 und Safari 2.0 (412)
Und ich hatte damals bevor ich Archive&Install auf Tiger gemacht habe, das Tool installiert mit dem man u.a. auch den Debug-Modus freischalt kann. Komme nicht mehr auf den Namen.
0
MacMark
MacMark28.06.0514:55
kacheng
Ist auch egal, war mein Fehler Standardmäßig ist der Wert nicht gesetzt und nicht vorhanden. Du mußt ihn also erst mit dem defaults write setzen, bevor Du ihn mit defaults read lesen kannst. Beim defaults write mit 1.0 entspricht das dem normalen Safariverhalten.
„@macmark_de“
0
Aronnax28.06.0515:21
@ MacMark
1.0 war der Wert von Safari bis Version 1.2
für Safari 1.3 und 2.0 wird er wohl bei 250ms liegen - deine Tipps sind nicht nur unvollständig, sondern in dieser Form nur schädlich.
(Wie man hier ja nachvollziehen kann)


@kacheng
die Pause gibt es nicht ohne Grund und ist von Version zu Version unterschiedlich - hinzukommen spezielle andere darauf abgestimmte Werte - entweder kennst du dich damit extrem gut aus und passte dann auch die "Pause" an jede neue Version an, oder lass es besser sein.

P.S.
"SafariSpeed" bringt nichts - inbesondere bei Safari 1.3 und 2.0


0
kacheng
kacheng28.06.0515:25
@MacMark
okay, jetzt gehts.

@Aronnax
hm, zu spaet. Wenn ich den Wert jetzt auf "1" setze, ist es dann wieder okay?
So spannend war es ja nun auch nicht. Wollte nur mal den Effekt sehen.
0
Aronnax28.06.0515:35
@kacheng
wie gesagt, 1.0 ist der von alten Safari Versionen
nimm es am besten ganz wieder raus
0
MacMark
MacMark28.06.0515:39
Rausnehmen kannst Du die Eigenschaft mit
defaults delete com.apple.Safari WebKitInitialTimedLayoutDelay
„@macmark_de“
0
Mila
Mila28.06.0516:00
Und auf welche Verzögerung stellt sich Safari dann zurück?

0
kacheng
kacheng28.06.0516:19
@MacMark
Super, danke.

Mit der Konsole sollte ich mich auch mal mehr beschaeftigen. Naja, sind ja bald Semesterferien
0
Nutriaschädel
Nutriaschädel28.06.0516:21
An dieser Stelle erstmal vielen Dank für Eure ausführlichen und hilfreichen Antworten!:-D:-D:-D

Nutria
0
MacMark
MacMark28.06.0516:28
Mila
Und auf welche Verzögerung stellt sich Safari dann zurück?

Ohne den Defaults-Wert scheint Safari so zu arbeiten, als wenn man mit dem Defaults-Befehl 0.250 einstellt. Zumindest nach meinem Test. Scheinbar liegt der Safariwert nicht mehr auf 1.0 sondern auf 0.25.
„@macmark_de“
0
Aronnax28.06.0516:30

@Mila
"Und auf welche Verzögerung stellt sich Safari dann zurück?"

Wenn er nicht noch andere Werte genommen oder sonstwas geändert hat, passiert bei Safari 1.3 und 2.0 genau das:
------------
So what I wanted to achieve in Safari was to replicate the rapid response feel of Firefox/Camino, but to temper that rapid response when it would lead to gratuitous flashing. Here's what I did.

(1) Create two constants, cMinimumLayoutThreshold and cTimedLayoutDelay. At the moment the settings for these constants are 250ms and 1000ms respectively.

(2) Don't allow layouts/paints at all if the stylesheets haven't loaded and if you're not over the minimum layout threshold (250ms).

(3) When all data is received for the main document, immediately try to parse as much as possible. When you have consumed all the data, you will either have finished parsing or you'll be stuck in a blocked mode waiting on an external script.

If you've finished parsing or if you at least have the body element ready and if all the stylesheets have loaded, immediately lay out and schedule a paint for as soon as possible, but only if you're over the minimum threshold (250ms).

(4) If stylesheets load after all data has been received, then they should schedule a layout for as soon as possible (if you're below the minimum layout threshold, then schedule the timer to fire at the threshold).

(5) If you haven't received all the data for the document, then whenever a layout is scheduled, you set it to the nearest multiple of the timed layout delay time (so 1000ms, 2000ms, etc.).

(6) When the onload fires, perform a layout immediately after the onload executes.

--------
die "Pause" würde also nicht nur runtergesetzt, sondern es gibt diverse Ausnahmeregeln - und die gibt es unter Safari bis Version 1.2 nicht
0
MacMark
MacMark28.06.0517:35
Aronnax
Da steht, daß 250 Millisekunden (also 0.250) lang definitiv nichts passiert. Diesen Wert kann man mit dem von mir genannten Befehl ersetzen. Wenn ich den auf 1/10 Millisekunde setze (also 0.0001), dann stellt Safari Inhalte sofort dar, wenn sie reinkommen und wendet im schlimmsten Fall später reinkommende Stylesheets danach an.
Mit dem naturbelassenen Safari hat man 0.25 Sekunden erstmal keine sichtbare Reaktion. Bei 2000er DSL mit Fastpath ist das nicht nötig
„@macmark_de“
0
Aronnax28.06.0518:45
@ MacMark
Es passiert sehr wohl etwas.
Die Seiten werden im Hintergrund geladen und gerendert.
Ohne diese Pause muss der Rechener laden, rendern und anzeigen und je nach Rechner und oder Seite, kann das ohne diese Pause dann sehr negative Folgen haben (also sehr viel langsamer oder auch eine rotierende Pizza )

Für besonders alte Rechner, ist es allein deshalb vielleicht sogar sinnvoll die Pause heraufzusetzen.
Sind eben alles Kompromisseinstellungen. Kann wohl sein, dass es bei deinen Rechner und deiner DSL-Leitung kürze Eingestellungen sinnvoll sind und man keine negativen Folgen bemerken kann. Nur wirst du anderseits kaum einen positiven Effekt erreichen können oder man bezahlt es mit einem flackernden Seitenaufbau u.s.w.
0
MacMark
MacMark28.06.0519:56
Aronnax
Mit "es passiert etwas" meinte ich, daß etwas optisch für den Benutzer passiert. Ich finde es praktisch, sofort mit dem Lesen beginnen zu können, obwohl unten noch Bilder und so weiter geladen werden und anschließend manchmal das Layout kurz arrangiert wird. Geflackert hat das bei mir zumindest noch nie. Ich habe die 1/10000 Sekunde schon sehr lange in Benutzung.

Speziell wenn eine Seite aus diversen Dateien besteht (enthaltene Bilder, externes CSS und mindestens eine HTML-Datei plus externe Aufrufe) kommt einem die sogenannte Fastpath-Option von DSL zugute. Da muß dann nicht jede Komponente einzeln quittiert werden.
„@macmark_de“
0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.