Der effizienteste Weg, um ein 1x1 GIF anzuzeigen (Tracking Pixel, Web Beacon)
Ich Baue ein basic-analytics-Dienst basiert in der Theorie aus, wie Google Analytics funktioniert, aber statt um eine tatsächliche Bild, ich bin die Weiterleitung der Bild-Anfrage zu einem Skript, übernimmt die Daten und dann die Ausgänge ein Bild. Da Browser Anforderung dieses Bild auf jeder laden, jede Millisekunde zählt.
Ich bin auf der Suche nach der effizienteste Weg für eine Datei zur Ausgabe einer gif-Datei von einem PHP-Skript. Bisher habe ich festgestellt 3 wichtigsten Methoden.
Gibt es eine effizientere Möglichkeit für mich die Ausgabe einer 1x1 GIF-Datei in ein PHP-Skript? Wenn nicht, welche von diesen ist am meisten effizient und skalierbar?
Drei Identifizierten Methoden
PHP image-Bildung-Bibliotheken
$im = imagecreatetruecolor(1, 1);
imagefilledrectangle($im, 0, 0, 0, 0, 0xFb6b6F);
header('Content-Type: image/gif');
imagegif($im);
imagedestroy($im);
file_get_contents
das Bild aus dem server-und Ausgabe, die es
$im = file_get_contents('raw.gif');
header('Content-Type: image/gif');
echo $im;
base64_decode
das Bild
header('Content-Type: image/gif');
echo base64_decode("R0lGODdhAQABAIAAAPxqbAAAACwAAAAAAQABAAACAkQBADs=");
(Mein Bauchgefühl war, dass base64 wäre die Schnellste, aber ich habe keine Ahnung, wie Ressourcen-intensiv, die Funktion ist; und dass file_get_contents würde wahrscheinlich skalieren weniger gut, da es fügt eine andere Datei-system-Aktion.)
Referenz, das GIF, das ich verwende ist das hier: http://i.stack.imgur.com/LQ1CR.gif
BEARBEITEN
So, der Grund, warum ich dienen diesem Bild ist, dass meine analytics-Bibliothek baut eine query-Zeichenkette und legt Sie auf dieses Bild Anfrage. Anstatt zu analysieren, Protokolle, ich bin die Weiterleitung der Anfrage an ein PHP-Skript verarbeitet die Daten und antwortet mit einem Bild,so dass der end-Nutzer der browser nicht mehr reagiert oder ein Fehler ausgelöst. Meine Frage ist, wie kann ich am besten dienen, das Bild innerhalb der Grenzen einer Skript?
InformationsquelleAutor der Frage Yahel | 2011-01-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
vielleicht
Erzeugt ein Binär-string identisch mit dem binären Inhalt der Datei von einem 1x1 transparent gif. Ich behaupte, dass diese effizient auf der Grundlage der Begründung, dass es keinen langsamen IO-wie das Lesen einer Datei, noch rufe ich alle Funktionen.
Wenn Sie möchten, um Ihre eigene version von den oben genannten hex-string, vielleicht so, dass Sie können ändern Sie die Farbe, die Sie verwenden können, diese zu generieren, der php-code für die echo-Anweisung.
InformationsquelleAutor der Antwort goat
Wäre wahrscheinlich am schnellsten für Bild von der Festplatte, sondern (vor allem wenn Sie mit bytecode-caching) für eine kleine Bilder im Voraus bekannt ist die base64-Weg der Schnellste ist, denke ich. Senden
Content-Length
könnte eine gute Idee sein, auch für das kleine Bild der browser würde in den meisten Fällen nicht warten, für alles, was nach dem Empfang des bytes, so dass, während Ihr server nehmen würde, wie viel Zeit, Einsatz Erfahrung wird ein Stück besser.Andere Möglichkeit wäre, damit Apache/lighttpd/nginx dienen, das Bild melden Sie den Zugriff und das Parsen offline.
InformationsquelleAutor der Antwort StasM
Statt dynamisch zu generieren/Ausgabe eines Bildes, warum nicht einfach ein redirect auf ein statisches Bild?
InformationsquelleAutor der Antwort Crayon Violent
Mit Laravel:
Wenn jemand will, dass für einige Grund.
Alternativ, wenn Sie nicht wie lange(ish) hex-strings im code:
InformationsquelleAutor der Antwort mpen