Warum gibt es mehr und mehr Websites (zum Beispiel Twitter oder Gawker) mit '#!' Anstatt von '?' Parameter vom Rest der URL trennen? Was sind die Vorteile?
'?' wird verwendet, um die Pfadkomponente der URL von der Abfragekomponente zu trennen. Wenn ein Browser eine solche Ressource anfordert, werden beide Komponenten an den Webserver gesendet. Der Server kann die Abfrage betrachten und bestimmen, welche Antwort zurückgesendet werden soll.
'#' wird anders verwendet - es trennt die "Fragment" - oder "Hash" -Komponente vom Rest der URL. Die Fragmentkomponente wird niemals an den Webserver gesendet, ist jedoch für Skripts verfügbar, die auf der Seite ausgeführt werden.
Vergleichen Sie zwei URLs, sagen Sie
%Vor%und
%Vor%Im ersten Fall wird die gesamte URL an den Server gesendet, und eine Antwort wird zurückgegeben. Alle Caches auf dem Weg vom Browser bis zum Server sehen die Abfragezeichenfolge und wissen, dass die Antwort nur für diese Abfrage relevant ist. Sie können die Antwort für diese Abfrage zwischenspeichern, aber die Antwort wird wahrscheinlich nicht zwischengespeichert.
Mit diesem Schema bedeutet dies, dass wenn example.com ein beliebter Dienst ist, sie eine vollständige Antwort an jeden einzelnen Benutzer des Dienstes senden müssen, und es ist sehr wahrscheinlich, dass keines ihrer Ergebnisse irgendwo zwischengespeichert wird.
Im zweiten Fall wird nur die Pfadkomponente http://www.example.com/service/
verwendet, und der Server gibt (wahrscheinlich) dasselbe Dokument an jeden Benutzer zurück, der diese URL anfordert. Upstream-Caches können dieses Dokument zwischenspeichern und neuen Benutzern bereitstellen, ohne für jede Anforderung zum ursprünglichen Webserver zurückzukehren.
Bei diesem Schema wird wahrscheinlich JavaScript ausgeführt, das sich das fragliche Fragment ansieht und dann zusätzliche Suchergebnisse vom Dienst anfordert. Diese könnten viel kleiner als eine ganze Seite sein, was die Belastung des Servers verringert, oder sie könnten cachefähige Ergebnisse sein, die mehreren Benutzern zur Verfügung stehen.
Die spezifische Form "#!" ist ein neuer Standard für Webanwendungen im AJAX-Stil, so dass ihre URLs von Suchmaschinen indiziert oder mithilfe von Webanalyse-Software analysiert werden können. Die tatsächliche URL-Spezifikation schreibt nur das Zeichen "#" vor und kann auch für andere Zwecke verwendet werden (wie benannte Anker in einem Dokument).
Es wird zu einem Standardverfahren , das von Google vorgeschlagen wurde, um AJAX web zu erstellen Anwendungen crawlable.
Die Verwendung des Nummernzeichens ist praktisch, wenn Sie eine Ajax-schwere Site erstellen. Websites, auf denen neuer Inhalt angezeigt wird, ohne die Seite neu zu laden, aktualisieren die URL in der Regel weiterhin, sodass bestimmte Inhalte verknüpft werden können. Sie können den Teil der URL nur nach dem '#' ändern, ohne die Seite neu zu laden (um zu verhindern, dass Websites so tun, als lebten sie in einer anderen Domäne als sie).