Zur Navigation

Funktion abfragen [2]

11 Jörg Kruse

@Selo

Alles was du per PHP includest, ist von vornherein im Quelltext enthalten, den der Browser erhält

Dieser Abschnitt:

<?php include ("bookmarks.html"); ?>

... wird bereits auf dem Server ersetzt durch den Inhalt der Datei bookmarks.html und erst dann wird die Datei an den Browser gesendet. Da in bookmarks.html vermutlich Anführungszeichen und andere Steuerzeichen enthalten sind, wird der String frühzeitig beendet und alles andere direkt im Brower angezeigt. Das Resultat des Includes kannst du ja auch in der Quelltextansicht des Browsers sehen.

abc.innerHTML den Inhalt von bookmarks.html zuzuweisen, ist Unfug. Da ist deine Lösung in Beitrag 1 noch vorzuziehen.

04.03.2013 16:09 | geändert: 04.03.2013 16:10

12 Selo

Hallo Horst und Jörg,
wenn ich die Datei .js nenne wie von Horst vorgeschlagen, erscheint im iframe alles als <pre>.
Mir bleibt wirklich nichts anderes als das was Jörg schreibt, die erste Lösung.

Würde das etwas bringen, wenn ich das hier
<?php include ("bookmarks.html"); ?>
in den footer schiebe und mit position:absolute; den div-block an die richtige Stelle schiebe? Ich vermute mal nicht, da die Datei ja trotzem bei jedem Aufruf in die Seite geladen wird.

Und zum Schluss noch eine Frage: Kann ich diese Anweisung meiner ersten Version statt wie bisher im Kopf auch in den footer schreiben?
<script type="text/javascript" language="JavaScript">
<!--
function oeffnen(a){
  var e=document.getElementById(a);
  if(!e)return true;
  if(e.style.display=="none"){
    e.style.display="block"
  } else {
    e.style.display="none"
  }
  return true;
}
//-->
viele Grüße und einen schönen Abend wünscht euch Lothar

04.03.2013 19:35

13 Horst_M

Zitat von Selo
und es werden vor allem auch keine Parameter für die Links übergeben. So funktionieren alle nicht mehr.
Bei mir dämmert es so langsam, nachdem ich mir den Quelltext und die Links noch einmal besehen habe. Kann sein, dass ich immer noch falsch liege, doch im Augenblick sehe ich das so:

Die bookmarks.html ist keine einfache HTML-Seite sondern ein PHP-Script? Und dieses Script soll mit $_SERVER["..."] die Werte für url= von den Links liefern. Wie ist eigentlich auch beinahe egal, jedenfalls wird ja ?url=http vor dem Parsen verarbeitet, wo sollte sonst der Wert herkommen und wenn nun die Seite mit dem Script im iFrame ladet, dann stimmt die Request URI nicht mehr. Ist verständlich, die müsste auf Referrer umgestellt werden oder mit JS in einer Variablen gespeichert werden, die dann mit

    var wert = ...;
    abc.innerHTML = "<iframe src=\"datei.html?url="+ wert +"\"
an das Script vor Aufruf übergeben wird und von PHP mit $_GET["url"] eingelesen und verarbeitet werden kann. Was dabei heraus kommen könnte, ein Sicherheitsleck, wenn url ungeprüft übernommen wird. Um das zu meistern, müsstest Du Dich schon etwas mehr zumindest in PHP einarbeiten.

Zitat von Selo
wenn ich die Datei .js nenne wie von Horst vorgeschlagen
Da habe ich wohl vergessen zu erwähnen, dass Du HTML in einer JS-Datei eigentlich nur als maskierten String verarbeiten kannst. Mein Fehler.

Zitat von Selo
Kann ich diese Anweisung meiner ersten Version statt wie bisher im Kopf auch in den footer schreiben?
Eine Funktion ist eine Funktion, wo die eingebunden wird, ist beinahe gleich, entscheidend ist, wo die aufgerufen wird. Hatte schon einmal gelesen, warum die früher meistens im Head eingebunden wurden, habe es aber wieder vergessen. Das lag wohl daran, dass Mitte der 90er die Browser noch nicht mit JavaScript klar kamen und einige dann den Code im Browser ausgaben. Um das zu vermeiden, wurden die Funktionen dann wohl zwischen <head> und </head> eingefügt oder mit <!-- //--> auskommentiert.





04.03.2013 20:23 | geändert: 04.03.2013 20:33

14 Jörg Kruse

Ich habe mir die verlinkte Seite jetzt auch nochmal angeschaut.

Zitat von Selo
Es sind also nur Links und Scripte zu anderen Seiten, die der normale Seitenbesucher nicht benötigt.
Nun verlängert das Laden nur unnötig die Ladezeit der Seiten und behindern somit das Anschauen der Bilder. Es sind auf zwei verschidenen Webseiten über 2000 Bilder.

Aber eingeblendet werden doch immer nur dieselben Social-Bookmark-Buttons? Wenn der User die erste Bild-Seite besucht hat, liegen die Grafiken im Browser-Cache. Auf der nächsten Bilderseite werden diese dann direkt aus dem Cache geladen (es sei denn der Browser ist so eingestellt, dass der Cache umgangen wird).

Bei einer Vielzahl gleichgroßer Grafiken können übrigens CSS-Sprites helfen, Ladezeiten zu verringern. Zwölf Grafiken werden dann z.B. nicht einzeln, sondern als eine große Grafik übertragen, und per CSS wird dann der jeweils benötigte Ausschnitt angezeigt. Diese Technik erfordert dann allerdings gute CSS-Kenntnisse :)

04.03.2013 22:34 | geändert: 04.03.2013 22:34

15 Selo

Vielen Dank Euch beiden, Jörg und Horst.
Es sind immer die gleichen Grafiken, Links und Skripte, die geladen werden.
Sprites verwende ich schon eine Weile, bei diesen Bildern aber noch nicht. Das ist noch nicht ganz fertig, da manche meiner Lieblingsanbieter zum Bookmarken nichts in der Art haben und ich dann selber etwas bauen muss. Momentan ist das mit einer Spritegrafik auch nicht so wichtig, da der Pagespeedservice von Google aus den Bilder andere Bilder mit meterlangen Namen macht und die diese Bilder im Speicher halten. Hier im Quelltext kann man das sehen: http://www.l-seifert.de/bilder-fruehling/fruehling.php

Ich werde nun doch die erste Version verwenden, denn mit dem iframe haben die Skripte, besonders das von Buffer, große Probleme.

Diese Datei für die Bookmarkbuttons, die ich mit php include, ist für mich nicht nur verschenkte Ladezeit, sondern rein aus meinem Empfinden heraus, halte ich so etwas auch für unnötigen Datenmüll, den eine vernünftige Seite nicht braucht. Deshalb ist es mein Wunsch gewesen, diese Daten wenn es irgendwie geht, erst bei der Benutzung zu laden. Leider geht das nicht und für diese Infos, die Ihr mir hier gegeben habt, bedanke ich mich bei Euch. Ich hätte wahrschnlich noch viele Tage ergebnislos herumprobiert.
Eine Erfahrung, die ich in letzter Zeit gemacht habe, ist die, dass die Seiten durch Verringerung der Ladezeiten von 4 auf 5 besuchte Seiten pro Seitenbesucher gekommen bin.

Viele Grüße von Lothar und nochmals Danke

04.03.2013 23:15

16 Horst_M

Bevor wir aneinander vorbei schreiben, GooglePageSpeed generiert die Thumbs und macht daraus diese Verweise?

"http://1-ps.googleusercontent.com/h/www.l-seifert.de/bilder-fruehling/..."

Um denen geht es Dir aber nicht, es geht Dir nur um Bookmarks wie diese?

<a rel="nofollow" target="_blank" href="http://pinterest.com/pin/create/bookmarklet/?url=http://www.asien.l-seifert.de/nepal-2012/Ganesh-Berge.html...

Die sehen zwar nicht schön aus im Quelltext, werden aber serverseitig so ausgeliefert. Ich verstehe ganz andere Sachen nicht, zum Beispiel wenn ich im Firebug sehe, dass es zu einer Verzögerung kommt, weil erst einmal ein Script von "https://www.xing-share.com/js/external/share.js" angefordert werden muss. Das wäre ein Ansatzpunkt, weil dieses Script doch wohl wirklich erst benötigt wird, wenn jemand den Link benutzen möchte. Aber frag mich jetzt nicht wie, ich benutze bislang keine Bookmarks, da sollten sich Jörg oder andere besser mit auskennen.

05.03.2013 12:01

17 Selo

Hallo Horst,

es geht nur um die Bookmarks, die ich mit der Datei include.

GooglePageSpeed generiert die Seiten, vor allem die Bilder, selbst neu. Das soll die Ladezeit verkürzen, allerdings werden auch die Wege von DE nach Amerika und wieder zurück zum Seitenbesucher aus DE wieder länger. Ich weiß noch nicht, ob ich das so lasse und ob es tatsächlich etwas bringt.

Das wäre ein Ansatzpunkt, weil dieses Script doch wohl wirklich erst benötigt wird, wenn jemand den Link benutzen möchte.

Genau das habe ich mir auch so gedacht, aber leider bisher ohne Erfolg.

Viele Grüße von Lothar

05.03.2013 12:37

18 Horst_M

Zitat von Selo
Ich weiß noch nicht, ob ich das so lasse und ob es tatsächlich etwas bringt.
Ich benutze so ein Zeug nicht, auch kein CSS Sprites, welches sich aber eventuell für Thumbs anbieten würde, weil dann weniger Request gestartet werden müssen. Da würde sich ein Vergleich lohnen.

Habe mit Google Page Speed nur einmal eine meiner Seiten überprüft und das Tool dann nie wieder angefasst. Ein Hinweis lautete in etwa, dass ich JS-Dateien zusammenfassen könnte oder so ähnlich. Ja woher will denn so ein Tool wissen, ob ich 2 JS-Dateien nur in der einen überprüften Seite benutze, was der Fall war, doch in den meisten Seiten nur eine, die nicht aufgebläht zu werden braucht.

Mit CSS mache ich es ebenso, eine ist für alle Seiten gleich, dazu dann noch eine selten.css, die dann nur das enthält, was nur von wenigen Seiten benötigt wird. Bilder lassen sich mit jedem Bildbearbeitungsprogramm optimieren, dazu bedarf es Google nicht. Die Frage ist, mit wie vielen Bildern rechnest Du insgesamt? In der Bildersuche scheinen sich 800 bis 1.000 von l-seifert.de zu befinden. Was ich bereits mehrfach las, dass einige ihre Bilder nach Amazon auslagern, weil die Server sehr schnell und die Kosten sehr gering sein sollen.

05.03.2013 14:46

19 Selo

Das mit Amazon kenne ich bisher noch nicht.
Google Page Speed habe ich im Firefox integriert und mir hat die Überarbeitung etwas gebracht. Alles geht zwar nicht, was die da schreiben aber einiges schon. Vor allem bleiben die Dinge übrig, die von Google selber stammen wie der G+ Button oder Analytics.

Was ich bei www.l-seifert.de benutze ist nicht das angesprochene Page Speed, sondern der Google Page Speed Services. Dabei werden alle Dateien über einen googleeigenen Server umgeleitet. Die verändern die Seiten und geben das dann aus. Hier ist eine Testseite: http://www.webpagetest.org/

05.03.2013 15:16

20 Horst_M

Neuere Browser vielleicht mehr, doch ältere Browser stellen wohl nicht mehr als vier gleichseitige Anfragen an den Server. Soll heißen, bei 8 Bildern, müssten die ersten 4 erst einmal empfangen werden, bevor wegen den nächsten vier Bildern angefragt wird.
Das soll aber nur für eine Domain gelten, also 4 gleichzeitige Request pro Domain. Liegen die Bilder nun unter einer anderen Domain, soll sich die Anzahl der gleichzeitigen Request von 4 auf 8 erhöhen, wenn ich das richtig verstanden habe. Verweist die andere Domain dabei noch auf einen schnellen Server, wie die von Amazon, kann der Browser in der gleichen Zeit die doppelte Menge an Daten einsammeln.
Mit schnell ist gemeint, wie lange ein Server trödelt, ehe er sich dazu durchringt eine Anfrage zu beantworten. So ist nicht nur die Anzahl der Anfragen entscheidend, sondern wie schnell ein Server diese beantwortet.

Ich habe es bisher nicht ausprobiert und habe es nur so gelesen, in der Annahme es richtig verstanden zu haben, kann mich also irren.

05.03.2013 15:34 | geändert: 05.03.2013 15:51

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]