Themenvorschläge

Ich versuche stets über Themen zu schreiben, die euch Leser in Bezug auf PHP, MySQL, Server und ganz allgemein Webentwicklung interessieren. Dazu lese ich andere Blogs, stolpere über Fragen bei der täglichen Arbeit oder nehme Themen auf, die mir von euch Lesern vorgeschlagen werden. Insbesondere letzterer Punkt bringt mich immer wieder auf neue Ideen, denn die Recherchearbeit für die Beiträge lehrt immer wieder viele neue Details. Diese teile ich dann natürlich mit euch, damit alle etwas davon haben.

Um eine zentrale Plattform zu haben, auf der Themenvorschläge gesammelt werden, habe ich diese Seite hier eingerichtet. In den Kommentaren bitte ich euch neue Themenvorschläge zu schreiben, die euch derzeit brennend interessieren und die mal für einen Beitrag getestet bzw. analysiert werden können.
Auch Diskussionen rund um die Themen sind natürlich ausdrücklich erlaubt.

89 Kommentare zu “Themenvorschläge

  1. Sven sagt:

    Hallo,

    ich wäre für eine ausführliche Übersicht wie man Variablen auf Ihr vorhandensein testet.

    Z.b habe ich festgestellt dass

    if(isset($_GET[‚variable)) && $_GET[‚variable‘] == ‚myvalue)

    schneller ist als ohne isset….

    Allerdings nur wenn die Variable nicht existiert.

    wie ist denn der beste Weg an die Geschwindigkeit ohne isset heranzukommen wenn die Variable existiert?

    wenn man außerhalb eine for-Schleife auf isset testet, kommt man glaub ich schon sehr nah ran.

    Also ich wäre begeistert hier man eine schöne Aufstellung zu bekommen!

  2. Miriam sagt:

    Hi,
    wenn man die zuladenden Dateien einer Website auf 2 Domains splittet, kann der User ja quasi von 2 Servern gleichzeitig runterladen. Da normalerweise die Files nacheinander heruntergeladen werden.

    Beispiel:
    beispiel.com (da liegen nur die HTML, PHP Dateien)
    media.beispiel.com (dort liegen die CSS, JS, Bilder usw.)

    Das Problem ist nur, dass dadurch auch ZWEI DNS Abfragen getätigt werden und somit viel Speed verloren geht.
    Irgendwo hab ich gelesen, dass man das irgendwie mit OpenDNS beheben könnte. Leider fand ich dazu keine Anleitung etc. wie man das anstellen kann.

    Es wäre somit sehr hilfreich, wenn du diese Praktik mal erklären könntest.

  3. Denis sagt:

    Hallo Miriam,

    > quasi von 2 Servern gleichzeitig runterladen

    Wenn du Probleme mit „ausgelasteten“ Servern haben solltest oder allgemein nur statische und dynamische Inhalte getrennt ausliefern möchtest, würde ich dir vielmehr dazu raten, diese unter der selben Domain, aber per getrenntem Load-Balancing doch über mehrere Server verteilt auszuliefern.

    Beispiel:

    http://example.org/* => geht an die Server web01, web02
    *aber*
    http://example.org/static/* => geht an static01, static02, static03

    Das lässt sich beispielsweise mit Lighttpd realisieren.

    So mache ich dieses bei wirklich großen Projekten bei uns, und dies hat sich bisher sehr bewährt. Zu einer eigenen (Sub-)Domain bei statischen Inhalten würde ich erst dann greifen wenn die DNS-Server an sich mit den Anfragen so überlastet sind, dass man diesen auf dem Weg etwas Last abnehmen kann. (dann aber auf Kosten der Ladegeschwindigkeit, da 2 DNS-Anfragen)

    Alternativ könntest du natürlich statisches auch über die reine IP ausliefern, kwick.de macht dies zub Beispiel so. Finde ich persönlich aber wenig elegant. (auch ein User verschickt mal ’nen Direktlink zum Bild)

    Um noch mal auf das Ursprungsposting zurückzukommen…
    > dass man das irgendwie mit OpenDNS beheben könnte
    das kann ich mir nicht vorstellen – denn OpenDNS müsste dann ja zum einen JEDER USER von dir auf seinem PC als Nameserver eintragen, und zum andern – dann sind es konzeptbedingt ja immer noch zwei Anfragen.
    Wobei, schneller könnte es sein, denn OpenDNS bedient ja auch nicht das ganze Internet. 🙂
    Aber das müsste jeder User dann selbst einstellen.

    Viele Grüße,
    Denis

  4. Miriam sagt:

    Hi,
    danke für Deine ausführliche Erklärung.
    Meine Seiten sind nur (noch) nicht so groß das man überhaupt über ein Server nachdenken muss. Ich möchte eben durch eine Subdomain, wie es zB auch kwick.de mit „img.kwick.de“ macht, statischen Inhalt von den PHP&HTML Seiten trennen. Daraus erhoffe ich mir eine erhöhte Ladegeschwindigkeit der Website.

    Vielleicht habe ich mich zu verkorkst ausgedrückt. Mein eigentliches Anliegen bestand darin, dass Problem mit den „2 DNS-Anfragen“ zu beheben/verbessern/lösen. Ich mein Google, Ebay, Yahoo usw. nutzen diese „Taktik“ ja auch mit Erfolg. Klar die haben auch CDN und viele Server, jedoch finden doch da auch immer mehrere DNS-Anfragen statt, oder nicht?. Daher muss es doch eine Lösung geben.

    Aus meiner noch unerfahrenen Sicht sollte doch folgende Theorie umsetzbar sein:
    Wenn die Subdomain zur selben IP wie die eigentliche Domain „linkt“, dann mache kein weiteren DNS-Abfrage. Sonst schon. Kann man das nicht irgendwie Client mäßig lösen durch ein Cookie, der diese Informationen mitliefert oder so etwas in der Richtung.

    Bitte seht nach, dass meine Kenntnisse (noch) nicht ausreichen, um euch Mein Problem mit Fachtermini zu erläutern.

    Danke
    Miriam

  5. MTZ sagt:

    Hallo!

    Ich bin gerade am Planen eines neuen PHP-Projektes. Uns stellt sich gerade die Frage, ob wir ein Framework verwenden sollen oder nicht…

    Mich würde daher ein Pro/Contra-Framework Beitrag interessieren sowie eine Performance-Analyse der gängigsten. (ZEND Framework, CakePHP,…)

    Vielen Dank!
    Matthias

  6. workerholic sagt:

    *nerv* *nerv*
    Folgende Ausgangssituation:
    Ich muss auf einen Datenbestand von über 4000 Zeilen aus MySQL zurückgreifen. ( 4 App-Server greifen auf 1 MySQL server zu) bei fast jede Seite, jetzt habe ich mir folgendes überlegt:
    MySQL einmal laden und diese als XML auf dem Lokalen Server speichern und diese dann bei den Restlichen aufrufen aus der XML lesen: Problem Geschwindigkeit:
    – obwohl wenn ich das Query aus MySQL hole bekomme ich das in ungefähr 0.08 Sekunden zurück (alle Zeilen)
    – wenn ich das aus der XML Lade dauert das ganze um die 1.62 Sekunden.
    Jetzt ist natürlich meine Frage, wie kann ich das auslesen der XML Datei beschleunigen?

    Problem zwei, wenn Dateien auf dem App-Server hochgeladen werden, werden diese mit einem Datenserver Synchronisiert und werden Lokal gelöscht. Zur Zeit wird das mit FTP ( ftp_connect….) gemacht, gibt es da Möglichkeiten diese Synchronisation zu beschleunigen?

    Internationalisierung & Versionierung:
    Ich liste Alle Elemente aus dem bereich auf wo man sich gerade befindet: in der Sprache die der Benutzer für sich definiert hat, falls diese nicht vorhanden ist, wird die Sprachdatei angezeigt die für diese inhalte vorhanden sind angezeigt. und natürlich in der letzten Version die vorhanden ist, so das immer die aktuelle version angezeigt wird. Das Problem bei der Sache ist das natürlich diese Abfrage sehr langsam ist und da wollte ich fragen ob ihr ne idee habt diesen query zu beschleunigen:

    SELECT con.content AS id,con.*,trans.trans_index,trans.title,trans.excerpt,trans.description,trans.content,trans.url,trans.meta_description,trans.meta_tags,trans.version,trans.created_alias
    FROM „.nx::$objTabs->get( „content“ ).“ con, „.nx::$objTabs->get( „translator“ ).“ trans
    WHERE con.visibility=’public‘ AND con.parent_content=’0′ AND con.checkInDateget( „lang_index“ ).“‚
    AND trans.version=(SELECT MAX(tm.version) FROM „.nx::$objTabs->get( „translator“ ).“ tm WHERE tm.lang_index='“.nx::$objUser->get( „lang_index“ ).“‚ AND tm.trans_key=trans.trans_key ) )
    )
    OR ( trans.lang_index=con.lang_index
    AND trans.version=(SELECT MAX(tm.version) FROM „.nx::$objTabs->get( „translator“ ).“ tm WHERE tm.lang_index=con.lang_index AND tm.trans_key=trans.trans_key ) ) )
    ORDER BY con.norder ASC, con.checkInDate ASC, trans.title ASC“;

  7. pSub sagt:

    Hallo!
    Ich plane gerade ein PHP/MySQL-Projekt und stehe vor der Entscheidung ob ich mysqli oder PDO nutzen soll. Wo seht ihr Vor- bzw. Nachteile und gibt es Geschwindigkeitsunterschiede?

    Vielen Dank
    pSub

  8. Joscha Prasse sagt:

    Ich schließe ich Eric bzgl. des Loadbalancing bei Hightraffic Webseiten an

    Sehr schöner Blog, weiter so!

  9. aso sagt:

    Servus,

    hätte eine Frage bzgl. der HTTP-Requests. Es heißt ja immer man solle diese minimieren. Gerade bei Stylesheets find ich es aber auf Dauer unübersichtlich alles in einer Datei zu haben.
    Nun gibt es ja die Möglichkeit im Stylesheet per @import andere Dateien einzubinden.
    Nun die Frage: Werden diese auch als HTTP-Request behandelt? Ist es schneller/langsamer? Vor/Nachteile etc.

    mfg

  10. andreas sagt:

    Hallo!

    Mein Themenvorschlag, der mich übrigens selbst brennend interessiert wäre ein Benchmark zu verschiedenen Funktionen, die die Existenz von Dateien zb. Bildern überprüfen.

    Es gibt zig Lösungsansätze für diese Kontrollfunktion ich glaube gerade deshalb könnte dieses Thema interessant sein :

    – get_headers
    – curl
    – fsockopen
    – fopen 🙂
    – file_exists
    – zudem ist es auch möglich mit javascript-ajax diese Kontrolle durchzuführen. Allerdings bin ich da nicht so bewandert.

    lg
    andreas

  11. Andreas sagt:

    Hallo,

    mich würde mal interessieren, wie so der Performance-Unterschied in verschiedenen Anwendungsbereichen bei folgenden Server-Kombinationen ist:

    Windows, Internet Information Services Webserver, PHP5
    Windows, Apache Webserver, PHP5
    Linux, Apache Webserver, PHP5

    Vielleicht auch noch CGI und mod_php Variante. Ist natürlich ein großes Projekt, wäre aber sicher nicht nur für mich interessant.

  12. Ren van Hoek sagt:

    Hallo,

    mich würde mal der Geschwindigkeitsunterschied zwischen einem verschachtelten if/else, if/elseif/else, einem switch/case Konstrukt und dem tenären Operator interessieren.

    Ich habe ich einem älteren Benchmark auf einer anderen Seite mal gelesen das der tenäre Operator wohl deutlich am schnellsten sein soll.

  13. Tim sagt:

    Hallo,

    mich würde es einmal interessieren, wie viel (wenn überhaupt) schneller caching ist, wenn man immer auf html-Dateien verlinkt.

    Diese werden dann ja vom Webserver ausgeliefert, was schneller sein sollte als wenn man erst php anschmeißt. Die 404er wenn eine Datei mal gelöscht wurde weil sie nicht mehr aktuell ist, fängt man dann mit PHP ab und erzugt die Datei.

    Desweiteren würde mich der Performanceunterschied zwischen einem absoluten Include und direkt in der Datei niedergeschriebenem Code interessieren.

  14. martin sagt:

    Mich würde interessieren, wie man Webseiten auf große Besucheranstürme vorbereitet, also wie man die Skripte gestaltet, wem man mit mehreren Servern/Datenbanken arbeiten muss.

  15. Alex sagt:

    Ein Vergleich zu verschiedenen Methoden die existens einer Datei zu Überprüfen (Kommt ja häufiger vor) wäre vll. mal interessant.
    z.B. file_exists() vs try..catch

    vg

  16. Bill sagt:

    In letzter Zeit teste ich wieder ausgiebig fremde PHP-Scripts.
    Nach wie vor sind viele davon sehr, sagen wir mal, „bescheiden“ programmiert.
    Da werden Variablen oder Array-Indizies verwendet, die nicht existieren oder Array-Indizies werden ohne Anführungsstriche geschrieben.

    Das funktioniert, weil man ja in PHP so schön sämtliche Warnings und Notices unterdrücken kann.
    Aber wie mir ein kurzer Test gezeigt hat, geht das zu Lasten der Performance, selbst wenn keine „Energie“ für die Ausgabe von Fehlermeldungen aufgewendet werden muss.

    Bei den fehlenden Anführungsstrichen sucht PHP zum Beispiel zunächst nach einer Konstanten mit diesem Namen und erst wenn keine gefunden wird, dann wird geprüft ob es sich vielleicht um einen String handelt. Das kostet Zeit.

    Mich würde mal interessieren wieviel Zeit das genau kostet. Das müsste man mal genauer untersuchen.
    Und als positiven Nebeneffekt bekommt man ja vielleicht den einen oder anderen Entwickler über die Performance-Schiene dazu etwas sauberer zu programmieren 🙂

    Viele Grüße.

    Bill

  17. Dhaal sagt:

    Jetzt wo das IPv6 Protokoll beschlossene Sache ist,
    wäre es recht praktisch zu wissen, wie man diese am besten in einer MySQL Datenbank unterbringt.
    Wäre super :p

    Viele Grüße

    Dhaal

  18. Tom sagt:

    Mich würde das neue Framework Fat-Free interesieren. Insbesondere Benchmarks zum nackten PHP und zu Smarty.

    LG
    Tom

  19. workerholic sagt:

    wie wäre es wenn ihr mal einen kleinen Test machen würdet, so etwas wie ein Vergleich zwischen

    method_exists( „test_class“,“test_function“ );
    und

    $test = new test();
    method_exists( $test,“test_function“ );

    der Aufruf ist sowohl als auch möglich und interessant wäre zu wissen welchen performance unterschied zwischen den verschiedenen arten der aufruf gibt… ähnliche funktionen gibt es ja in php reichlich 😉

  20. Roger sagt:

    Hallo zusammen

    1. Frage
    Hat es in PHP eine Auswirkung auf die Performance, ob ich Arrays oder Variablen benutze?

    Beispiel:
    ———
    $eineVar = 2;
    $meinArray = array(1, 2, 3, 4, 5);
    ———
    echo ‚Ein Beispiel mit array: ‚ . $meinArray[‚3‘];
    ———
    ODER
    ———
    echo $eineVar;

    ———
    Beide Varianten sollten eine »2« ausgeben, doch ist die Performance mit Array minim schlechter? Arrays allgemein schlechtere Performance als Variablen? Oder gleich?

    :::::::::::::::::::::::::::::::::::::::::::::::::::

    Frage 2:
    Macht es in PHP einen grossen Unterschied, häufig zwischen HTML und PHP »hin- und her zu schalten« oder besser gleich »in PHP bleiben« und den HTML-Text mit echo ausgeben?

    Beispiel:
    ———
    <form action="“
    method=“post“ name=“form“>
    ———
    ODER besser gleich alles mit PHP ausgeben…
    ———
    <?php
    echo '

    :::::::::::::::::::::::::::::::::::::::::::::::::::

    Frage 3:
    Sind Konstanten in PHP gleich performant wie Variablen.
    Konstanten müssen doch vom System auf Überschreibung ge-
    prüft werden, da sie nach der Definition nicht mehr über-
    schrieben werden dürfen?

    Wenn ich als alleiniger Entwickler an einem PHP-Projekt
    arbeite, könnte ich Konstanten auch als Variablen definieren,
    um das Ganze performanter zu halten?

    Beispiel:
    Mit PHP-Konstanten
    define(‚_INHALT‘, 1);
    define(‚_ZUSAETZE‘, 2);
    define(‚_BILDERHOCHLADEN‘, 3);
    define(‚_KONTAKTANGABEN‘, 4);
    define(‚_OVERVIEW‘, 5);
    define(‚_SAVE‘, 6);

    Mit (konstanten) Variablen
    $_INHALT = 1;
    $_ZUSAETZE = 2;
    $_BILDERHOCHLADEN = 3;
    $_KONTAKTANGABEN = 4;
    $_OVERVIEW = 5;
    $_SAVE = 6;

    Wenn ich also nur ein kleines Skript habe und als alleiniger
    Entwickler sicher bin, dass ich die (konstanten) Variablen
    nicht überschreiben werde, ist diese Version performanter
    als mit echten Konstanten?

    Danke für eure Antworten im Voraus 🙂

  21. Roger sagt:

    Sorry, hab es mir schon gedacht. Bei Frage 2 wurde das Beispiel verständlicherweise nicht richtig übernommen.

    Nochmal das Beispiel zur Frage 2 (1. Post oben)
    ———————————————–
    Macht es einen Unterschied in der Performance, ob ich;
    <HTML-Tag><?php echo $PHP-Variable;?><HTML-Tag><?php echo $PHP-Variable;?><HTML-Tag><?php echo $PHP-Variable;?><HTML-Tag><?php echo $PHP-Variable;?> usw.

    also häufig zwischen HTML und PHP »hin- und her zappe«
    oder besser gleich das HTML mit echo ausgeben und »in
    PHP bleiben«?

    also

    echo ‚HTML-Tags‘ . $PHP-Variable . ‚HTML-Tags‘ . $PHP-Variable . ‚HTML-Tags‘ . $PHP-Variable . ‚HTML-Tags‘ . $PHP-Variable . ‚HTML-Tags‘ . $PHP-Variable . ‚HTML-Tags‘ . $PHP-Variable;

  22. Tobi sagt:

    Guten Tag,

    erstmal vielen Dank für den tollen Blog, hat mir schon oft weitergeholfen und ich habe auch viele Tipps von hier in meinen Projekten umgesetzt.

    Jetzt hätte ich auch mal einen Wunsch 🙂

    Der Vergleich zwischen json_encode() und serialize() wäre doch eine interessante Geschichte, in der Manual zu serialze() hat auf php.net schon jemand geschrieben, dass json_encode() für Array -> String scheinbar besser geeignet und schneller wäre, nach meinen Tests (weiß aber nicht ob das so wie ich getestet habe Sinn macht, deshalb will ich hier nicht den Profis vorgreifen) ist json_encode() schneller. Da ich aber nicht weiß welchen Array ich zum testen benutzen sollte damit es anständige Ergebnisse gibt reiche ich das mal als Themenvorschlag ein.

    Grüße
    Tobi

  23. GhostGambler sagt:

    Variablen sind schneller als Arrays, da Arrays intern als Hashmap verwaltet werden(zumindest assoziative Arrays, bei numerischen bin ich mir gerade nicht sicher).
    Insofern macht es Sinn bei komplizierten und regelmäßigen Zugriffen auf bestimmte Stellen eines assoziativen Arrays, die Stelle als Referenz zu speichern:
    []

    Ob Ausgabe via echo/print oder durch Beenden eines PHP-Blocks, dürfte sich bei entsprechenden Optimizern nichts tun. Der Code sollte vor allem eines sein: Lesbar.

    Wenn Variablen konstant sind, deklariere sie als Konstanten. Wenn nicht, dann nicht.
    Lesbarkeit und Verständnis von Code geht vor Performance.

    Benchmark zwischen serialize und json_encode ist sinnlos, weil beide Funktionen eine ganz andere Semantik haben.
    serialize speichert Werte, sodass sie 1:1 in PHP auch wieder unserialized werden können. json_encode hingegen konvertiert die PHP-Datenstruktur in eine JSON-Struktur, welche nicht wieder 1:1 zurück konvertiert werden kann.

    Man analysiere dazu z.B: folgendes Beispiel:
    []

    und die entsprechende Ausgabe
    []
    und sieht sofort, dass nicht nur aus dem Objekt bei JSON ein Standard-Objekt wurde, sondern auch, dass das private Attribut verschwunden ist.

    Ein Vergleich von json_(en|de)code mit (un)?serialize ist ein Vergleich von Äpfel mit Birnen.

  24. Dacen sagt:

    Wie wäre es mit einem artikel über die verschiedenen möglichkeiten resource zu laden (dateien) und auch wieder welche auszugeben. es gibt ja menge mehtoden über streams solche sachen zu relaisieren, aber auch direkt funktionen fopen, etc.

    man findet über diese thema sehr wenig, aber es lässt sich mit wenigstens den oben erwähnten ansätzen das gleiche realisieren. Wäre man interssant zu wissen, was eigentlich „optimal“ wäre.

  25. Dacen sagt:

    kleine erweiterung:

    stream_context_set_option
    stream_context_set_params

    sind ja im endeffekt die gleichen funktion. gibt es vielleicht doch einen performance unterschied?

  26. Patrick sagt:

    Hi,
    eine interessante Frage zu der ich bis dato noch keine Antwort gefunden habe lautet:
    Wie verhält sich die Geschwindigkeit / Serverlast bei der Verwendung eines CMS im Vergleich zu hardcodierten Inhalten einer Website?
    Also kann durch das hardcodieren der Inhalte z.B. auf der Startseite eine Website beschleunigt werden bzw. die Last auf dem Server verringert werden?
    Grüße Patrick

  27. Robert sagt:

    @Patrick:
    Grundsaetzlich macht es immer Sinn fuer die Geschwindigkeit des Entwicklers ein selbstgebautes oder fremdes CMS bzw. Framework einzusetzen. Aber nur zum Generieren von Seiten. Zum Ausliefern der Seiten sollte diese nach einmaliger Generierung immer gecacht, verkleinert und komprimiert werden. In PHP ganz einfach mit wenigen Zeilen machbar: Output Buffering, zumindest Leerzeilen und Leerzeilen am Zeilenanfang entfernen + komprimiert liefern (HTML = Text, Text-Komprimierung bringt ca. 70% Performance-Steigerung). Weiterhin sollte nicht nur server-seitig sondern auch client-seitig gecacht werden. Dann laden bereits besuchte Seiten blitzartig. Mit HTML5 koennen Seiten vor dem Klick ganz vorgeladen werden.

    Beispiele in PHP + HTML5 + Apache .htaccess:

    Alle Seiten werden ueber eine Engine namens „index.php“ ausgeliefert.
    index.php:

    ————————————–
    index.php (Performance optimiert)
    ————————————–

    // falls Seite bereits gecachts, dann aus Ordner ./cache holen und tschuess
    if (file_exists($cache_name)) // load cache
    {
    echo file_get_contents($cache_name);
    exit;
    }
    else // Seite noch nicht gecacht, also generieren + am Ende cachen
    {
    ob_start(„ob_gzhandler“); // ob = Output Buffering = Ausgabe-Pufferung
    set_header();
    include _CONTROLLER . $_GET[‚id‘]; // sollte vorher gefiltert werden
    set_footer();
    cache::set(); // beim naechsten Klick auf diese Seite sofort aus dem ./cache Ornder holen, _nicht_ generieren
    }

    Anmerkung:
    mit nem einfache str_replace() werden in der Klassen-Methode cache::set() Leerzeichen + Leerzeilen rausgefiltert vor dem Schreiben in den cache-Ordner.
    Eingebautes Benchmarking mit function get_speed() die in jeder Fusszeile der Seite ausgegeben wird.

    Beispiel:
    http://www.LinkMatrix.de – Die Startseite wird server-seitig in 0.1 ms generiert bzw. nur immer aus dem cache geholt.

    ————————————–
    HTML5 prefetch bzw. prerender
    ————————————–

    HTML5-Beispiele zum Vorladen von Seiten, leider bezeichnet das Firefox mit prefetch und Chrome mit prerender, daher zwei Zeilen pro Datei erforderlich:


    Auf Wunsch zippe ich meine Engine + caching Klasse, stelle sie unter Open Source Lizenz und geb sie hier zur Diskussion frei. Alle meine Projekte mach ich damit. Nutze die drei unabhaengigen Teile der MVC-Architektur. Alles ganz simpel gehalten + auf Performance optimiert. Google sagt: Performance is a feature. Recht hamse.

    ————————————–
    .htaccess (Apache-Webserver)
    ————————————–

    # No eTags = reduces header size – since we’re sending far-future expires, we don’t need ETags for static content
    Header unset Pragma
    FileETag None
    Header unset ETag

    AddOutputFilterByType DEFLATE text/plain text/html text/xml
    AddOutputFilterByType DEFLATE text/css text/javascript

    # Static Content Cache-Control Header – Keep in cache for 3 months
    # This effects icons, pdf files, flv and swf flash files, jpeg images, png imges, and gif images.
    # 3 MONTHS: 60 x 60 x 24 x 30 x 3 = 7.776.000 Sekunden

    Header set Cache-Control „public“
    Header set Expires „Thu, 15 Apr 2021 20:00:00 GMT“
    Header unset Last-Modified

    Zusammenfassung:
    Immer CMS / Framework verwenden, aber auch immer das Ergebnis cachen. Cachen sowohl server-seitig (nur einmal generieren, dann immer aus ./cache laden, also auch client-seitig. Dann werden wiederholte Besuche bereits besuchter Seiten blitzartig geladen.

  28. Robert sagt:

    Leider wurden die HTML5-Tags weggefiltert. Zweiter Versuch:

    link rel=“prefetch“ href=“http://www.example.de/index.php?id=berlin“
    // Firefox

    link rel=“prerender“ href=“http://www.example.de/index.php?id=berlin
    // Chrome

    Spitze Klammern am Anfang u. Ende dazudenken.

  29. Bill sagt:

    Gerade habe ich mal wieder so einen Fall:
    Um bei einem Datenimport zu überprüfen ob ich einen Datensatz bereits kenne, ermittle ich alle Referenznummern aus der Datenbank und speichere die in einem Array, welches ich dann bei jedem Schleifendurchlauf durchsuche.

    Dabei kann man auf zweierlei Arten vorgehen. Entweder speichert man die Referenznummern im Array als Werte und prüft mit in_array() oder man speichert die Referenznummern im Array als Schlüssel und prüft mit isset().

    Der zu verarbeitende Daten-Array sieht in etwa so aus:

    $data = array(
    array(
    ‚RefNo‘ => 50,

    ),
    array(
    ‚RefNo‘ => 101,

    ),

    );

    Hier ein paar Beispiele die die Verarbeitung der Daten mit den beiden unterschiedlichen Prüfmethoden zeigt.

    Beispiel 1, IDs als Werte:

    $ref = array(
    0 => 100,
    1 => 101,
    2 => 102,

    );

    for ($i = 0; $i TRUE,
    101 => TRUE,
    102 => TRUE,

    );

    for ($i = 0; $i < count($data); $i++) {
    $no = $data[$i]['RefNo'];

    if (isset($ref[$no])) {
    // Mach was!
    }
    }

    Gefühlsmäßig würde ich sagen, dass die Prüfung mit isset() schneller ist, getestet habe ich es aber noch nicht.

  30. Bill sagt:

    Mist, wegen der spitzen Klammern in der Prüfung der for-Schleife ist der ganze Code zerschossen worden.
    Ich versuche es nochmal mit Entites:

    Beispiel 1, IDs als Werte:

    $ref = array(
    0 => 100,
    1 => 101,
    2 => 102,

    );

    for ($i = 0; $i < count($data); $i++) {
    $no = $data[$i][‚RefNo‘];

    if (in_array($no, $ref)) {
    // Mach was!
    }
    }

    Beispiel 2, IDs als Schlüssel:

    $ref = array(
    100 => TRUE,
    101 => TRUE,
    102 => TRUE,

    );

    for ($i = 0; $i < count($data); $i++) {
    $no = $data[$i][‚RefNo‘];

    if (isset($ref[$no])) {
    // Mach was!
    }
    }

  31. GhostGambler sagt:

    Würde immer die Datenbank schauen lassen, ob ein Datensatz existiert. Die kann gesetzte Indizes nutzen.

  32. Bill sagt:

    Mag ja sein. Aber für Fälle in denen keine Datenbank im Spiel ist wäre der Vergleich trotzdem interessant.

    Ausserdem bin ich mir nicht sicher ob es wirklich performanter ist bei x-tausend Schleifendurchläufen jedes Mal einen Datenbankzugriff zu machen, anstatt einen Array zu überprüfen.

    Das könnte man vielleicht auch mal testen.

  33. Mike sagt:

    Wie sieht es mit stream_get_line und fgets aus?

    Macht es einen Unterschied bei kleinen und bei großen Dateien?

  34. RStyle sagt:

    Mich würde interessieren, ob es preformancetechnisch FETCH_ASSOC, FETCH_OBJ oder FETCH_CLASS in PDO Unterschiede gibt und ob es mein Skipt überhaupt verlangsamt/verbessert, wenn ich einen „Selecting Type“ wähle.

Eine Antwort schreiben

Ihre E-Mail-Adresse wird nicht veröffentlicht. Benötigte Felder sind markiert mit *

You may use these HTML tags and attributes: <a href=""> <blockquote cite=""> <pre lang=""> <b> <strong> <i> <em>