html code in html datei laden (require)
jonas
- html
0 Thomas J.S.0 jonas
Hallo,
ich schreibe derzeit meine homepage auf php um.
Die Seite enthält die neue vesrion von Mike Halls menu bar, welche nun auch code im <body> bereich verlangt...
Nun könnte ich den code natürlich auf jder seite von PHP einbinden lassen, will ich aber nicht, da ich es für unsinnig halte die gleichen Zeichenfolgen für jede Seite einzeln laden zu müssen.
Den Code über einen I-frame einzubinden geht auch nicht, da die drop-dpwn-menus, wenn ich mich recht erinnere, hinter dem i-frame rand verschinden würden.
Mit <object data=bar.htm> passiert im IE6 gar nichts und der N6 scheint das object wie ein iframe aufzufassen->also auch hinfällig
die JavaScript mit Java variante, wie auf http://selfaktuell.teamone.de/artikel/javascript/file-open/ beschrieben würde die Seite, wenn ich das richtig sehe auch jedesmal neu laden, nicht cachen. Ich kann mich da natürlich auch irren...
Also habe ich das Problem so gelöst, daß ich in eine bargen.js Datei eine sehr lange document.writeln() anweisung stehen habe und diese über <script scr="bargen.js">... laden lasse.
Nun ist dies nicht umbedingt die schönste Methode, da die .js entweder unübersichtlich wird (wenn man den ganzen code in eine Zeile schreibt) oder unschön, weil man immer das +" an afang und " am ende der Zeile haben muss, nicht zu vergessen das ganze ausblocken() von "s und 's.
Hier die eigentliche Frage:
Gibt es einen schöneren Weg??
jonas
hallo,
Hier die eigentliche Frage:
Gibt es einen schöneren Weg??
verstehe zwar nicht ganz was du meinst (müsste ich denn Mike Halls menu bar und das was es macht kennen?) und weiss letztlich auch nicht was du und wo laden oder doch einbinden möchtest (mal iframe mal object dann noch mit javascript)
aber wenn du immer wieder den selben code in einer seite einfügen musst, kannst du das per SSI ( server side include) realisieren, sofern diese von deinem webserver unterstützt wird. (z.B. Apache)
grüße
thomas
müsste ich denn Mike Halls menu bar und das was es macht kennen?
nein
»»und weiss letztlich auch nicht was du und wo laden oder doch einbinden möchtest (mal iframe mal object dann noch mit javascript)
ich habe die verschiedenen, mir bekannten, varianten abgeklappert und versucht die Probleme zu beschreiben.
aber wenn du immer wieder den selben code in einer seite einfügen musst, kannst du das per SSI ( server side include) realisieren, sofern diese von deinem webserver unterstützt wird. (z.B. Apache)
Ja, ich will den selben code bei viele Seiten haben, und möchte dies nicht server side regeln, weil dann der gleiche code doch zig mal übertragen würde.
Ich möchte dem Browser sagen, daß er den inhalt einer bestimmten Datei an einer bestimmten stelle der Seite plaziert und ihn so interpretiert, als wäre er in der eigentlichen Datei gewesen, also keinen abgegzenzten bereich alockiert.
Ich hab die derzeitige Lösung mal kurz hochgeladen. (http://www.heldenbrau.de/news2/). Die Datei die jetzt den Code enthäst ist die (http://www.heldenbrau.de/script/bargen.js).
jonas
hallo jonas,
Ja, ich will den selben code bei viele Seiten haben, und möchte dies nicht server side regeln, weil dann der gleiche code doch zig mal übertragen würde.
Ich möchte dem Browser sagen, daß er den inhalt einer bestimmten Datei an einer bestimmten stelle der Seite plaziert und ihn so interpretiert, als wäre er in der eigentlichen Datei gewesen, also keinen abgegzenzten bereich alockiert.
es wird genau so einmal übertragen wie dein Javascript-datei.
<!--#include file="footer.html" -->
footer.html ist nach der ersten übertragung auch im cache des browsers.
Ich hab die derzeitige Lösung mal kurz hochgeladen. (http://www.heldenbrau.de/news2/). Die Datei die jetzt den Code enthäst ist die (http://www.heldenbrau.de/script/bargen.js).
und was erhalte ich wenn ich javascript ausgeschaltet habe? ;-)
grüße
thomas
Hi Thomas,
es wird genau so einmal übertragen wie dein Javascript-datei.
<!--#include file="footer.html" -->
footer.html ist nach der ersten übertragung auch im cache des browsers.
Ich fürchte, da bist Du ein wenig zu optimistisch.
Schau mal in Dein access_log in solchen Fällen.
In der Tat löst ein SSI-Include im Apache einen internen HTTP-Subrequest
aus. Aber eben nur einen internen - der Client bekommt davon nichts mit,
und er bekommt auch nur ein einziges Dokument. Die via SSI eingebundenen
Daten müssen also in der Tat immer wieder mit übertragen werden.
jonas' Befürchtung dürfte also zunächst einmal berechtigt sein.
Andererseits: Wenn diese Daten klein sind, insbesondere maximal 1 KB, dann
ist das nicht so schlimm. Denn ein Browser, der auf ständige Cache-Validie-
rung eingestellt ist, würde mit dem ca. 1 KB HTTP-Header pro Request mehr
Lärm machen, um die Gültigkeit des Cache-Inhalts immer wieder prüfen zu
lassen, als wenn die Daten zusammen mit dem restlichen Dokument immer wie-
der neu übertragen werden. Caching ist nämlich gar nicht sooo toll - und
je kleiner die Daten, um so schlechter wird es.
Und bei Verwendung von komprimierter Datenübertragung wird das Verhältnis
noch besser zugunsten von SSI - ein HTTP-Header läßt sich nicht komprimie-
ren, die Daten aber schon.
und was erhalte ich wenn ich javascript ausgeschaltet habe? ;-)
Das ist in der Tat eine berechtigte Frage.
Sofern die Site nicht grundsätzlich JavaScript benötigt, sollte man sich
allein wenig ein bißchen Performance nicht davon abhängig machen.
Viele Grüße
Michael