PHP verlängert Ladezeit? – SELFHTML-Forum Forum als Ergänzung zum SELFHTML-Wiki und zur Dokumentation SELFHTML https://forum.selfhtml.org/self PHP verlängert Ladezeit? Wed, 07 Jul 10 07:44:20 Z https://forum.selfhtml.org/self/2010/jul/7/php-verlaengert-ladezeit/1457402#m1457402 https://forum.selfhtml.org/self/2010/jul/7/php-verlaengert-ladezeit/1457402#m1457402 <p>Hallo,<br> ich habe im Head meines HTML-Dokumentes folgenden PHP-Code eingebaut:</p> <pre><code class="block language-php"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>head</span><span class="token punctuation">></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>title</span><span class="token punctuation">></span></span>Test<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>title</span><span class="token punctuation">></span></span><span class="token php language-php"><span class="token delimiter important"><?php</span> <span class="token comment">// Rückgabe bei keinem IE: -1 </span> <span class="token keyword">function</span> <span class="token function-definition function">ieversion</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token variable">$match</span><span class="token operator">=</span><span class="token function">preg_match</span><span class="token punctuation">(</span><span class="token string single-quoted-string">'/MSIE ([0-9]\.[0-9])/'</span><span class="token punctuation">,</span><span class="token variable">$_SERVER</span><span class="token punctuation">[</span><span class="token string single-quoted-string">'HTTP_USER_AGENT'</span><span class="token punctuation">]</span><span class="token punctuation">,</span><span class="token variable">$reg</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">if</span><span class="token punctuation">(</span><span class="token variable">$match</span><span class="token operator">==</span><span class="token number">0</span><span class="token punctuation">)</span> <span class="token keyword">return</span> <span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">;</span> <span class="token keyword">else</span> <span class="token keyword">return</span> <span class="token function">floatval</span><span class="token punctuation">(</span><span class="token variable">$reg</span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token comment">//Das Skript lädt je nach Browsertyp und -version eine unterschiedliche CSS-Datei </span> <span class="token variable">$Version</span> <span class="token operator">=</span> <span class="token function">ieversion</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">switch</span> <span class="token punctuation">(</span><span class="token variable">$Version</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">case</span> <span class="token number">5</span><span class="token punctuation">:</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"<link rel='stylesheet' media='screen' type='text/css' href='/ie.css' > "</span><span class="token punctuation">;</span> <span class="token keyword">case</span> <span class="token number">5.5</span><span class="token punctuation">:</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"<link rel='stylesheet' media='screen' type='text/css' href='/ie.css' > "</span><span class="token punctuation">;</span> <span class="token keyword">case</span> <span class="token number">6</span><span class="token punctuation">:</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"<link rel='stylesheet' media='screen' type='text/css' href='/ie.css' > "</span><span class="token punctuation">;</span> <span class="token keyword">case</span> <span class="token number">4</span><span class="token punctuation">:</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"<link rel='stylesheet' media='screen' type='text/css' href='/ie.css' > "</span><span class="token punctuation">;</span> <span class="token keyword">default</span><span class="token punctuation">:</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"<link rel='stylesheet' media='screen' type='text/css' href='/stylesheet.css' > "</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token delimiter important">?></span></span><span class="token tag"><span class="token tag"><span class="token punctuation"></</span>head</span><span class="token punctuation">></span></span> </code></pre> <p>Kann es sein, dass durch dieses Skript die Ladezeit verlängert wird?<br> Gruß,<br> Euer Bio-logisch</p> PHP verlängert Ladezeit? Wed, 07 Jul 10 08:01:40 Z https://forum.selfhtml.org/self/2010/jul/7/php-verlaengert-ladezeit/1457411#m1457411 https://forum.selfhtml.org/self/2010/jul/7/php-verlaengert-ladezeit/1457411#m1457411 <p>Hi, Bio-logisch!</p> <p>Natürlich verlängert PHP die Ladezeit. Selbst wenn FastCGI oder mod_php und Techniken wie XCache verwendet werden, ist es immer noch wesentlich komplizierter und speicheraufwendiger als das Ausliefern einer statischen Seite - und lustigerweise würde diese ausreichen, um Deine Anforderungen zu erfüllen, sofern Du Dir mit Conditional Comments (selber googeln hilft, bin gerade zu faul, einen Link zu suchen) behilfst.</p> <p>Gruß, LX</p> <div class="signature">-- <br> RFC 1925, Satz 2: Egal, wie fest man schiebt, ganz gleich, wie hoch die Priorität ist, man kann die Lichtgeschwindigkeit nicht erhöhen. </div> PHP verlängert Ladezeit? Wed, 07 Jul 10 08:04:47 Z https://forum.selfhtml.org/self/2010/jul/7/php-verlaengert-ladezeit/1457406#m1457406 https://forum.selfhtml.org/self/2010/jul/7/php-verlaengert-ladezeit/1457406#m1457406 <p>Hi,</p> <blockquote> <p>//Das Skript lädt je nach Browsertyp und -version eine unterschiedliche CSS-Datei</p> </blockquote> <p>Du solltest Dein Konzept überdenken. Diese Herangehensweise ist Quark.</p> <blockquote> <p>Kann es sein, dass durch dieses Skript die Ladezeit verlängert wird?</p> </blockquote> <p>Jedes Script ist langsamer als statisches html - allerdings dürfte das bei Deinem Script kaum messbar sein.</p> <p>Gruesse, Joachim</p> <div class="signature">-- <br> Am Ende wird alles gut. </div> PHP verlängert Ladezeit? Wed, 07 Jul 10 08:06:02 Z https://forum.selfhtml.org/self/2010/jul/7/php-verlaengert-ladezeit/1457405#m1457405 https://forum.selfhtml.org/self/2010/jul/7/php-verlaengert-ladezeit/1457405#m1457405 <p>Mahlzeit Bio-logisch,</p> <blockquote> <p>Kann es sein, dass durch dieses Skript die Ladezeit verlängert wird?</p> </blockquote> <p>Ja.(*)</p> <p>Warum aber verlässt Du Dich überhaupt auf eine vom Browser bzw. dessen Benutzer beliebig manipulierbare Angabe wie den HTTP_USER_AGENT, um zu bestimmen, um welchen Browser es sich handelt?</p> <p>Schreibe *ein* sauberes, <a href="http://jigsaw.w3.org/css-validator/" rel="nofollow noopener noreferrer">valides Stylesheet</a>, das bei <a href="http://validator.w3.org/" rel="nofollow noopener noreferrer">validem HTML-Code</a> in allen standardkonformen Browsern das gewünschte Ergebnis erzeugt:</p> <p><code class="language-html"><span class="token tag"><span class="token tag"><span class="token punctuation"><</span>link</span> <span class="token attr-name">rel</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>stylesheet<span class="token punctuation">"</span></span> <span class="token attr-name">media</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>screen<span class="token punctuation">"</span></span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>text/css<span class="token punctuation">"</span></span> <span class="token attr-name">href</span><span class="token attr-value"><span class="token punctuation attr-equals">=</span><span class="token punctuation">"</span>/stylesheet.css<span class="token punctuation">"</span></span><span class="token punctuation">></span></span></code></p> <p>Gib *anschließend* die für die von Dir unterstützten Versionen des IE erforderlichen Ausnahmen und Sonderregeln als CSS-Hacks an - je nach Vorliebe entweder direkt in dem einen Stylesheet ... oder z.B. als weiteres Stylesheet, das per <http://de.selfhtml.org/css/layouts/browserweichen.htm#alternative@title=Conditional Comment> eingebunden wird (und natürlich *nur* die Ausnahmen enthält!):</p> <pre><code class="block language-html"><span class="token comment"><!--[if IE]> <link rel="stylesheet" media="screen" type="text/css" href="/ie.css"> <![endif]--></span> </code></pre> <p>Mir persönlich gefällt die letztere Variante gut: so belästige ich "normale" Browser nicht mit den für IE erforderlichen CSS-Hacks - und mir persönlich ist es egal, ob ein IE jetzt ein oder zwei Stylesheets anfordert ... wer einen mangelhaften Browser benutzt, muss eben damit leben, dass er ein paar Millisekungen länger braucht.</p> <p>Du wirst hier im Forum aber speziell zu diesem Thema diverse Meinung hören. Mein Tipp: lass' Dich nicht besabbeln - probiere die verschiedenen Alternativen aus und entscheide, was für Dich am Besten geeignet ist.</p> <p>(*) Schließlich muss der PHP-Code ja erst ausgeführt werden, bevor das Ergebnis an den Browser geliefert werden kann. Du kannst ja mal versuchen zu messen, wieviele Milli- oder Mikrosekunden die Ausführung dauert.</p> <p>MfG,<br> EKKi</p> <div class="signature">-- <br> sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:| </div> PHP verlängert Ladezeit? Wed, 07 Jul 10 09:22:45 Z https://forum.selfhtml.org/self/2010/jul/7/php-verlaengert-ladezeit/1457404#m1457404 https://forum.selfhtml.org/self/2010/jul/7/php-verlaengert-ladezeit/1457404#m1457404 <p>Ganz unabhängig von den berechtigt vorgetragenen Einwänden der Vorposter: Dein Skript an sich hat ein Designproblem, bekanntlicherweise grast der Interpreter ab dem ersten erkannten Case alle darauf folgenden Cases ab und führt den notierten Code aus.</p> <p>Im schlimmsten Fall (IE 5, der Fall ist wirklich schlimm) hättest du also:</p> <p><link rel='stylesheet' media='screen' type='text/css' href='/ie.css' > <link rel='stylesheet' media='screen' type='text/css' href='/ie.css' > <link rel='stylesheet' media='screen' type='text/css' href='/ie.css' > <link rel='stylesheet' media='screen' type='text/css' href='/ie.css' > <link rel='stylesheet' media='screen' type='text/css' href='/stylesheet.css' ></p> <p>als Ausgabe.<br> Ein break hilft hier Wunder.</p> <p>Dieses Verhalten kann man sich auch Zunutzen machen, gerade in deinem Fall:</p> <pre><code class="block language-php"> <span class="token variable">$Version</span> <span class="token operator">=</span> <span class="token function">ieversion</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">switch</span> <span class="token punctuation">(</span><span class="token variable">$Version</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">case</span> <span class="token number">5</span><span class="token punctuation">:</span> <span class="token keyword">case</span> <span class="token number">5.5</span><span class="token punctuation">:</span> <span class="token keyword">case</span> <span class="token number">6</span><span class="token punctuation">:</span> <span class="token keyword">case</span> <span class="token number">4</span><span class="token punctuation">:</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"<link rel='stylesheet' media='screen' type='text/css' href='/ie.css' > "</span><span class="token punctuation">;</span> <span class="token keyword">break</span><span class="token punctuation">;</span> <span class="token keyword">default</span><span class="token punctuation">:</span> <span class="token keyword">echo</span> <span class="token string double-quoted-string">"<link rel='stylesheet' media='screen' type='text/css' href='/stylesheet.css' > "</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre> <div class="signature">-- <br> for your security, this text has been encrypted by ROT13 twice. </div> PHP verlängert Ladezeit? Wed, 07 Jul 10 12:02:31 Z https://forum.selfhtml.org/self/2010/jul/7/php-verlaengert-ladezeit/1457403#m1457403 https://forum.selfhtml.org/self/2010/jul/7/php-verlaengert-ladezeit/1457403#m1457403 <p>Wenn ich die Seite mit dem einen Browser besuche und speichere und dann mit einem anderen Browser anschauen möchte passiert was? Genau.</p> PHP verlängert Ladezeit? Wed, 07 Jul 10 08:12:02 Z https://forum.selfhtml.org/self/2010/jul/7/php-verlaengert-ladezeit/1457407#m1457407 https://forum.selfhtml.org/self/2010/jul/7/php-verlaengert-ladezeit/1457407#m1457407 <blockquote> <p>Hi,</p> <blockquote> <p>//Das Skript lädt je nach Browsertyp und -version eine unterschiedliche CSS-Datei<br> Du solltest Dein Konzept überdenken. Diese Herangehensweise ist Quark.</p> </blockquote> </blockquote> <p>Naja. Das weiß ich auch. Das Problem ist, ich habe für die Standardkonformen Browser viele Elemente ohne Breite und Höhe angegeben, dafür aber mit top, bottom, left & right. Bei den IE-Versionen nach IE 6 schafft der IE das auch. Eben nicht bei IE6. Und wie soll ich dann nalle Eigenschaften für den IEW setzten. Ich hab's mit dem Star-Hack probiert. Das Problem ist, dass ich fast alle Eigenschaften neu setzen muss ==> rießige CSS-Datei.<br> Was soll ich tun?<br> Bei ConditionalComments tritt ja das glecihe Problem auf, dass ich z.B: bei vielen Elementen erst mal position: ....; auf "Default" setzten muss.<br> Viele Grüße<br> Bio-logisch</p> PHP verlängert Ladezeit? Wed, 07 Jul 10 11:02:55 Z https://forum.selfhtml.org/self/2010/jul/7/php-verlaengert-ladezeit/1457408#m1457408 https://forum.selfhtml.org/self/2010/jul/7/php-verlaengert-ladezeit/1457408#m1457408 <blockquote> <p>Was soll ich tun?</p> </blockquote> <p>Conditional Comments oder Hacks verwenden.</p> <blockquote> <p>Bei ConditionalComments tritt ja das glecihe Problem auf, dass ich z.B: bei vielen Elementen erst mal position: ....; auf "Default" setzten muss.</p> </blockquote> <p>"default ist keine gültiger Wert für die position-Eigenschaft.</p> PHP verlängert Ladezeit? Wed, 07 Jul 10 14:39:56 Z https://forum.selfhtml.org/self/2010/jul/7/php-verlaengert-ladezeit/1457409#m1457409 https://forum.selfhtml.org/self/2010/jul/7/php-verlaengert-ladezeit/1457409#m1457409 <blockquote> <p>"default ist keine gültiger Wert für die position-Eigenschaft.</p> </blockquote> <p>Nein. Aber wenn ich nichts angebe (=> Das brauche ich) ist es standardmäßig relative. Jrtzt sind meine Elemente aber z.T: mit abolut positioniert. Für den IE, der das nicht braucht, muss ich jetzt jedesmal erst relative; setzten. Das war mit Default gemeint.</p> PHP verlängert Ladezeit? Wed, 07 Jul 10 16:20:58 Z https://forum.selfhtml.org/self/2010/jul/7/php-verlaengert-ladezeit/1457410#m1457410 https://forum.selfhtml.org/self/2010/jul/7/php-verlaengert-ladezeit/1457410#m1457410 <blockquote> <blockquote> <p>"default ist keine gültiger Wert für die position-Eigenschaft.<br> Nein. Aber wenn ich nichts angebe (=> Das brauche ich) ist es standardmäßig relative.</p> </blockquote> </blockquote> <p>Auch "nichts" stellt keinen ungültigen Wert dar und wird folgerichtig ignoriert:</p> <pre><code class="block language-css"><span class="token selector">#foo</span> <span class="token punctuation">{</span> position<span class="token punctuation">:</span> absolute<span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token selector">#foo</span> <span class="token punctuation">{</span> position<span class="token punctuation">:</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre> <p>hier wird "absolute" weiterhin der gültige Wert sein, da die zweite Deklaration ignoriert wird.</p> <blockquote> <p>Jrtzt sind meine Elemente aber z.T: mit abolut positioniert. Für den IE, der das nicht braucht, muss ich jetzt jedesmal erst relative; setzten. Das war mit Default gemeint.</p> </blockquote> <p>relative ist aber üblicherweise nicht der Vorgabewert, der Position-Eigenschaft.</p> <p>Und "jedes mal" einen anderen Wert setzen ist immer noch wesentlich weniger arbeit als ein vollständig redundantes CSS-File zu verfassen.</p> <p>allgemein.css</p> <pre><code class="block language-css"><span class="token selector">#foo</span> <span class="token punctuation">{</span> background<span class="token punctuation">:</span> blue<span class="token punctuation">;</span> color<span class="token punctuation">:</span> green<span class="token punctuation">;</span> <span class="token comment">/* 20 weitere Eigenschaften */</span> <span class="token punctuation">}</span> </code></pre> <p>ie6.css</p> <pre><code class="block language-css"><span class="token selector">#foo</span> <span class="token punctuation">{</span> background<span class="token punctuation">:</span> red<span class="token punctuation">;</span> color<span class="token punctuation">:</span> green<span class="token punctuation">;</span> <span class="token comment">/* 20 weitere Eigenschaften */</span> <span class="token punctuation">}</span> </code></pre> <p>oder doch lieber das hier</p> <pre><code class="block language-css"><span class="token selector">#foo</span> <span class="token punctuation">{</span> background<span class="token punctuation">:</span> red<span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre>