joerghuelsermann.de Experiment mit Dataurl

Experiment mit Dataurl

Um das Experiment zu erläutern verwende ich eine SVG Datei um die übertragenden Daten gering zu halten.

Wie man an der folgenden Liste erkennen kann ist die Verwendung von Dataurl gegenüber der Angabe der URL mit 60 Zeichen nicht unbedingt vorteilhafter.

Dataurl mit entsprechendem Content Type

Bewusst binde ich die Dataurl ein aus dem Grunde das diese auf den Zeichensatz UTF-8 umgewandelt wird falls dieser nicht schon bereits angewendet wird. Das wäre in diesem Beispiel bereits zwar schon der Fall ist aber nicht überall gegeben.

Ob dieser Vorteil wie ich finde die höhere Datenmenge und die teilweise mangelnde Unterstützung rechtfertigt ist eine Frage die man sich an dieser Stelle stellen sollte. Denn der Unterschied in der Datenmenge wirkt sich bei einer höheren Datenmenge noch stärker aus.

Dataurl als Text

Für die weitere Entwicklung dieser Idee werde ich wohl in einigen Fällen eine Version als Text brauchen und diese dann mit regulären Ausdrücken noch entsprechend modifizieren.

Umgewandelter Kode für die Dataurl

Da nicht alle Browser die Verwendung von Dataurl in einem object Element unterstützen an dieser Stelle nochmal als Alternative der empfangende Kode

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="550px" height="100px"
 viewBox="0 0 330 60" xml:lang="de">
<title>
mammuthanull SVG Format</title>
<desc>
SVG Datei mit dem Text mammuthanull für den Vergleich mit anderen Bildformaten</desc>
<a xlink:href="/artikel/seo/#mammuthanull" xlink:title="mammuthanull">
<rect x="0" y="0" width="330" height="60" fill="#000033" />
<text x="5" y="50" font-family="Arial" font-size="48px" fill="#ffffcc">
mammuthanull</text>
</a>
</svg>

Kode für die Erzeugung der Dataurl

Auf diesem Prinzip basiert der Kode den ich bei diesem Experiment angewendet habe. Im Hintergrund ist er etwas umfangreicher aber alle nötigen Anweisungen wären zur Erläuterung des Prinzip nicht hilfreicher. Die Daten werden abgefragt und nach Bestimmung des Content Type in entspechende Dataurl umgewandelt. Danach werden diese Daturl in einem object Element platziert. Die benötigten Daten hätte ich mir auch auf einen anderen Weg holen können. Bewusst möchte ich aber für die weitere Entwicklung diesen Weg gehen.

$url = 'http://joerghuelsermann.de/artikel/seo/bild/mammuthanull.svg';
$curl = curl_init();
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl,CURLINFO_HEADER_OUT,true);
curl_setopt($curl,CURLOPT_URL,$url);
$code = curl_exec($curl);
curl_close($curl);
$svg = 'data:image/svg+xml;charset=utf-8;base64,'.base64_encode($code);
$code = str_replace(array('>',' viewBox'),array('>'."\n","\n".' viewBox'),$code);
$text = 'data:text/plain;charset=utf-8;base64,'.base64_encode($code);
echo '<object data="'.$svg.'"></object>';
echo '<object data="'.$text.'"></object>';

Beobachtungen während der Erstellung

Wenn ich die Webseite die ich abfrage ändere auf einen Link der in den Suchergebnissen von Google erscheint erhalte ich bei der Abfrage als Beispiel folgende Zeilen.

<script>window.googleJavaScriptRedirect=1</script><script>
var f={};f.navigateTo=function(b,a,g){if(b!=a&&b.google){if(b.google.r){b.google.r=0;
b.location.href=g;a.location.replace("about:blank");}}
else{a.location.replace(g);}};f.navigateTo(window.parent,window,"http://joerghuelsermann.de/artikel/seo/");
</script><noscript><META http-equiv="refresh"content="0;URL='http://joerghuelsermann.de/artikel/seo/'"></noscript>

Man könnte jetzt diese Ansammlung von Parametern versuchen näher zu ergründen. Wahrscheinlich sind einige davon verschlüsselt. Der einzige Parameter den man in der Antwort wenn man die Seite aufruft findet ist die betreffende URL. Daraufhin wird man weitergeleitet auf die betreffende Webseite. Erstaunlich finde ich die Tatsache das an dieser Stelle mit im Grunde einer veralteten Technik gearbeitet wird. Im Fall der Deaktivierung dieser beiden Möglichkeiten zur Umleitung existiert eine Alternative durch den Server.

Das mit der Alternative trifft aber nur für den Fall zu das man nicht die URL mit Aktivierung abfragt und diese bei beiden deaktivierten Möglichkeiten direkt in den Browser eingibt. Stand vom 26.05.2012.

Ich könnte jetzt so vorgehen automatisch die Google Suche abzurufen und den betreffenden Link für den Suchbegriff wie zum Beispiel mammuthanull an dieser Stelle platzieren. Wahrscheinlich auch einige Parameter tauschen die für andere Webseiten bei einer Suche existieren. Oder den vermutlich leicht erkennbaren Parameter für die Position ändern und auf diesem Wege Google in Verwirrung stürzen. Beziehungsweise auch nicht Google Deutschland sondern auch die entsprechenden Varianten aus der Schweiz und Österreich auch noch in diese Überlegungen einbeziehen. Meiner Ansicht nach sind solche Hintergund Aktionen eher als sehr fragwürdig anzusehen.

Dabei stellt sich mir aber die Frage ob nicht bereits solche Vorgehensweisen genutzt werden. Auf der anderen Seite ist es mir zu schade wahrscheinlich nur einige Millisekunden für den Aufbau einer Webseite zu opfern um in dieser Weise vorzugehen. An dieser Stelle hat Benutzerfreundlichkeit eindeutig Vorrang in meinen Überlegungen.