19. October 2006, 22:13, by Silvan Mühlemann

SCRIPT-Tag und lahme Ad-Server

YawningIn London hätten die Girls besonders kurze Jupes. Du gibst also uk.tilllate.com in die Adresszeile ein. Die Seite lädt: Logo – Navigation – drei Sekunden Pause… – Fullbanner – Contentbox – drei Sekunden Pause… – Rectangle-Banner – drei Sekunden Pause…

Und so geht’s weiter, bis die Seite nach endlosen fünfzehn Sekunden endlich fertig aufgebaut ist. Schuld an der langen Aufbauzeit sind aber nicht etwa die langsamen tilllate-Web-Server. Der Bölimann ist ad.uk.doubleclick.net, welcher die Banner für unsere UK-Seite ausliefert. Dem Besucher ist dies aber egal: “tilllate ist langsam”, wir gemotzt.

Es handelt sich hier um eine ärgerliche Eigenschaft des SCRIPT-Tags. Wird mittels SRC-Attribut auf ein externes Skript verwiesen, so führt der Browser diese aus, bevor der Rest der Seite aufgebaut wird. Liefert der Drittserver dieses Skript nun mit Verzögerung aus, wird der gesamte Seitenaufbau blockiert.

Mit dem wenig bekannten DEFER-Attribut im SCRIPT-Tag kann der Browser angewiesen werden, nicht auf die Ausführung des Skriptes zu warten. Das löst das Problem der Zwangspause. Ein Problem haben wir aber: Die externen Skripte geben mit document.write() meist eine Serie von Tags aus… OBJECT, EMBED etc. Das Banner halt. Wartet der Browser nicht, bis er das Skript hat, so wird das Banner an der falschen Position ausgegeben. Und dort stört es bestimmt noch mehr als in seinem reservierten Sitzplatz oberhalb der Seite.

Da können wir nun die Methode mit dem SCRIPT kippen und auf IFRAME zurückgreifen. Die darin angezeigte Seite wird asynchron angezeigt. Der Drittserver kann sich so viel Zeit lassen wie er will. Oder gar nicht antworten. Das Problem hier: Wir sind in den Dimensionen eingeschränkt. Wir geben diese vor im IFRAME-Tag. Soll doch das HTML-Doc im IFRAME drin seinen Platz verändern. Stopp! Verboten. Dieser darf sein eigenes Frame nicht verändern (ausser es kommt von der gleichen Domain). Aber wir brauchen flexible Bannerspaces, da unsere Werbemittel nicht immer das gleiche Format haben!

Au dem techblog.tilllate.com haben wir ein externes Javascript: Die vier tilllate Fotos oben rechts. Der tilllate-API-Server liefert die Fotos oft mit Verzögerung aus. Die Lösung: Um hier zügigen Seitenaufbau zu sichern, wird das Skript erst im Fuss der Seite aufgerufen. Kurz vor dem BODY-Tag. Der Bereich, wo die Fotos hinkommen, sind mit einem DIV markiert. Ueber die innerHTML-Property werden die Fotos dann asynchron in die korrekte Stelle eingefügt. Egal wie lahm der tilllate-API-Server ist.

Filed under: Web Development

2 Comments

  1. eine gute lösung den script am fuss zu platzieren.

    ich bin gerad emit safari 2.0.4 (macosx 10.4.8) auf der seite und das verdecken die 4 fotos die sidebar (navigation auf der rechten spalte).
    mit camino oder firefox sieht alles korrekt aus (gecko engine).

    schaut doch mal nach was da los ist.

    wenn du einen screenshot möchtest, dann schreib mir eine email.

    freundliche grüsse
    kux

    Comment by kux — 27. October 2006 @ 22:27

  2. Ist nun korrigiert. Danke. Habe die gleiche Config wie Du.

    Ein eigenartiges Safari-Verhalten: Das Setzen der .innerHTML-Property hat bei der verwendeten Darstellung des Platzhalter-DIVs (<div id="foo"/>) gleich die gesamte UL überschrieben!

    Comment by silvan — 27. October 2006 @ 23:25

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.

© 2017 tilllate Schweiz AG - Powered by WordPress