Einführung <br />Nicht jeder hat Zugang zu einer Hochgeschwindigkeits-Internetverbindung. Auch wenn jeder Zugriff auf ein Hochgeschwindigkeitsnetzwerk hat, kann es verschiedene Gründe dafür geben, warum Ihre Webanwendung scheinbar langsam läuft. In Zeiten immer schnellerer Breitbandverbindungen sollten Sie die Seitenladezeiten im Auge behalten. Verkürzen Sie die kostbare Seitenladezeit um Sekunden und die noch kostbareren Anforderungs- und Antwortzeiten um Millisekunden. Sie schaffen ein besseres Erlebnis für Ihre Besucher. Nach der Lektüre dieses Artikels verfügen Sie über ein gutes Verständnis der Grundlagen der Optimierung der Ladezeit von Webseiten. Darüber hinaus können Sie die Tools und Kenntnisse nutzen, um langsam ladende Seitenabschnitte und Engpässe besser zu identifizieren und zu diagnostizieren. Voraussetzungen <br />Idealerweise sollten Sie Mozilla Firefox installiert haben. Sie sollten außerdem über allgemeine Kenntnisse in der Webentwicklung verfügen. Die in diesem Artikel behandelten Themen sind nicht komplex. Wenn Sie sich jedoch mit Themen wie Hypertext Markup Language (HTML), Cascading Style Sheets (CSS) und der Programmiersprache ™ auskennen, wird Ihnen das Studium dieses Artikels leichter fallen. Keine IDE erforderlich, nur Ihr bevorzugter Editor. Sie müssen JavaScript in Ihrem Browser aktivieren. Um mehr über Firebug und YSlow zu erfahren, müssen Sie außerdem den Firefox-Webbrowser installiert haben. Wenn Sie keinen Breitbandanschluss haben Viele Menschen greifen über eine Breitbandverbindung auf das Internet zu, sei es DSL, Kabel, Glasfaser oder eine andere Methode. Benutzer, die keinen Zugriff auf diese Technologie haben, sind allerdings gezwungen, DFÜ-Verbindungen zu verwenden. Sie haben sicherlich vergessen, wie es war, per DFÜ-Verbindung im Internet zu surfen, aber versuchen Sie sich daran zu erinnern, als Webseiten noch Zeile für Zeile geladen wurden. Glücklicherweise kann diesen armen Menschen jetzt geholfen werden. Sie können das Erlebnis verbessern, indem Sie die Ladezeit Ihrer Seite verkürzen. Allerdings sind DFÜ-Verbindungen nicht die einzige Ursache für langsames Laden und Reagieren. Viele Webdesigner glauben fälschlicherweise, dass die Optimierung der Website-Leistung aufgrund der Verfügbarkeit von Hochgeschwindigkeits-Internetverbindungen unnötig würde. Diese Ansicht ist falsch. Beispielsweise können viele Aufgaben, die früher mit Desktop-Software ausgeführt wurden, heute online erledigt werden. Es ist sehr schwierig, bei einer Webanwendung ein schnelles und reaktionsfähiges Erlebnis wie bei Desktopsoftware zu erreichen, daher ist Leistungsoptimierung sehr wichtig. Glücklicherweise gibt es Tools und bewährte Methoden, mit denen sich Reaktions- und Ladezeiten verbessern und so für ein reibungsloseres Erlebnis sorgen lassen. Unverzichtbare Tools <br />Für alle Aufgaben im Zusammenhang mit der Optimierung müssen Sie Tools zum Diagnostizieren von Engpässen und Identifizieren von Problemen verwenden. Die beiden heute in der Webentwicklung am häufigsten verwendeten Tools sind Firebug und YSlow, beides kostenlose Open Source-Add-Ons für Firefox. Feuerwanze Eine der beliebtesten Firefox-Erweiterungen ist Firebug (siehe Ressourcen), eine Anwendung, die Webentwicklern die Arbeit erleichtert. Es enthält viele sehr nützliche Funktionen, wie zum Beispiel: JavaScript-Debugging JavaScript-Befehlszeile zur Überwachung der JavaScript-Leistung und zum Verfolgen von XmlHttpRequests Melden Sie sich bei der Firebug-Konsole an. Tracking Überprüfen Sie HTML-Elemente und bearbeiten Sie HTML-Code dynamisch. Bearbeiten Sie CSS-Dokumente dynamisch. YSlowYSlow (siehe Ressourcen) analysiert eine Webseite und teilt Ihnen mit, warum sie langsam geladen wird, basierend auf den von Yahoo! erstellten Hochleistungs-Webregeln (siehe Ressourcen). YSlow ist ein Firefox-Plugin, das sich in Firebug integrieren lässt. Sie müssen daher zuerst Firebug installieren, bevor Sie YSlow installieren und verwenden können. Installieren Sie FirebugDer Installationsprozess für beide Firefox-Erweiterungen ist sehr einfach. Führen Sie die folgenden Schritte aus, um Firebug zu installieren:
Sie können jetzt über das Menü „Extras“ auf Firebug zugreifen. Sie können Firebug in einem neuen Fenster oder in einem vorhandenen Fenster öffnen (siehe Abbildung 1).
Es ist erstaunlich, wie oft einfache Designregeln ignoriert werden, was zu nicht optimierten Webseiten mit langsamem Download führt. Beachten Sie die folgenden Regeln, dann werden Ihre Seiten schneller geladen. Verwenden Sie eine gute Struktur Wenn Sie unbedingt XHTML verwenden müssen, versuchen Sie, es so weit wie möglich zu optimieren. Beispielsweise können Sie die Download- und Analysegeschwindigkeit verbessern, indem Sie Leerzeichen entfernen und strikte XHTML-Codierungspraktiken anwenden. Um die strikten XHTML-Regeln durchzusetzen, fügen Sie Ihrem Dokument die folgende Doctype-Anweisung hinzu: Code kopieren Der Code lautet wie folgt:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> XHTML 1.0 Strict entspricht Strict HTML 4.01 und enthält Attribute und Elemente, die in der veralteten HTML 4.01-Spezifikation nicht vorhanden sind. Denken Sie daran, dass es zwei Tags gibt, die in XHTML Transitional, aber nicht in XHTML Strict verwendet werden können, zum Beispiel: <Mitte> Überladen Sie Ihr Layout nicht Bevor Blogs (und neue Websites) populär wurden, galt es als schlechte Praxis, Seiten horizontal oder sogar vertikal scrollen zu lassen. Je kleiner die Seite, desto schwieriger (aber nicht unmöglich) ist es, sie ordentlich auf den Bildschirm zu bringen. Heutzutage sind bei Blogs und inhaltsbasierten Websites lange Seiten mit einer Größe von mehreren Hundert Kilobyte keine Seltenheit. Ja, Sie müssen mehr Platz füllen, aber das bedeutet nicht, dass Sie ihn mit großen Hintergrundbildern, vielen Tabellen oder viel Inhalt füllen müssen. Halten Sie sich an den Grundsatz der Einfachheit: Weniger ist mehr. Die Seite ist mit verschiedenen Arten von Bildern, Videos, Werbung usw. gefüllt, was stark gegen das Prinzip der Praktikabilität verstößt. Überlegen Sie es sich daher zweimal, bevor Sie der Seite Inhalt hinzufügen. Verwenden Sie keine Bilder zur Darstellung von Text Im Gegensatz zu Schriftarten, bei denen wir kaum Einfluss darauf haben, wie sie in verschiedenen Browsern angezeigt werden, werden Bilder immer genau so angezeigt, wie sie entworfen wurden. Dies ist jedoch keine Entschuldigung dafür, Bilder zur Darstellung von Text zu verwenden. Das häufigste Beispiel für die Verwendung von Bildern zur Darstellung von Text sind Navigationsleisten. Schöne Schaltflächen sind attraktiver, werden jedoch langsam geladen. Darüber hinaus können Bilder immer noch nicht direkt von Suchmaschinen indexiert werden. Daher ist die Verwendung von Bildern zur Navigation für die Suchmaschinenoptimierung (SEO) nicht förderlich. Verwenden Sie niemals Bilder zur Darstellung von Text, wenn Sie mithilfe zahlreicher CSS-Tricks auch ohne diese schöne Schaltflächen erstellen können. Ein spezieller Navigationstyp, der sich für CSS-Stile eignet, ist die Navigation mit Registerkarten (siehe Abbildung 3). Abbildung 3. Navigation mit Registerkarten Code kopieren Der Code lautet wie folgt:#nav { schweben: links; Breite: 100 %; Hintergrund: #E7E5E2; Schriftgröße: 95 %; Zeilenhöhe: normal; Rahmen unten: 1px durchgezogen #54545C; } #nav ul { Rand: 0; Polsterung: 10px 10px 0 50px; Listenstil: keiner; } #nav li { Anzeige: Inline; Rand: 0; Polsterung: 0; } #nav ein { schweben: links; Hintergrund: URL("tableftK.gif") keine Wiederholung links oben; Rand: 0; Polsterung: 0 0 0 4px; Textdekoration: keine; } #nav eine Spanne { schweben: links; Anzeige:Block; Hintergrund: URL („tabrightK.gif“), keine Wiederholung rechts oben; Polsterung: 5px 15px 4px 6px; Farbe: #FFF; } /* Kommentierter Backslash-Hack verbirgt Regel vor IE5-Mac \*/ #nav ein Bereich {float:none;} /* IE5-Mac-Hack beenden */ #nav a:hover span { Farbe: #FFF; Hintergrundposition: 100 % -42px; } #nav a:hover { Hintergrundposition: 0 % -42px; } #nav a:hover span { Hintergrundposition: 100 % -42px; } Listing 2. HTML-Code für tab-basierte Navigation Code kopieren Der Code lautet wie folgt:<div id="nav"> <ul> <li><a href="#" title="Link 1"><span>Link 1</span></a></li> <li><a href="#" title="Link 2"><span>Link 2</span></a></li> <li><a href="#" title="Link 3"><span>Link 3</span></a></li> <li><a href="#" title="Längerer Linktext"><span>Längerer Linktext</span></a></li> <li><a href="#" title="Link 5"><span>Link 5</span></a></li> </ul> </div> Cookie-Nutzung prüfen Darüber hinaus kann die Reaktionszeit verbessert werden, indem ein früheres Ablaufdatum oder gar kein Ablaufdatum festgelegt wird. Um das Ablaufdatum eines Cookies in PHP festzulegen, verwenden Sie den folgenden Code: Code kopieren Der Code lautet wie folgt:<?php $expire = 2592000 + Zeit(); // Füge 30 Tage zur aktuellen Zeit hinzu setcookie(Benutzer-ID, "123rrw3", $expire); ?> Dieser Code legt die Cookie-Benutzer-ID fest und setzt das Ablaufdatum auf 30 Tage ab dem aktuellen Datum. Fügen Sie keinen unnötigen JavaScript-Code ein, sondern lagern Sie ihn so weit wie möglich aus. Ähnlich wie Cookies dauert das Herunterladen von JavaScript-Dateien eine Weile, was zwangsläufig die Ladegeschwindigkeit der gesamten Seite verlangsamt. Verwenden Sie JavaScript daher mit Bedacht (nur wenn es wirklich nötig ist) und optimieren Sie Ihre Skripte hinsichtlich Größe und Geschwindigkeit. Eine weitere Möglichkeit, die JavaScript-Downloadzeit zu verkürzen, besteht darin, externe Dateien zu verwenden, anstatt die Skripte inline einzubinden. Dieser Ansatz funktioniert auch für CSS, da Browser ausgelagerten Text zwischenspeichern, während Inline-Code (in der HTML-Seite selbst) für CSS oder JavaScript jedes Mal zusammen mit dem HTML geladen wird. Um CSS- und JavaScript-Code durch Referenzierung in HTML auszulagern, können Sie Code der folgenden Form verwenden: Code kopieren Der Code lautet wie folgt:<link href="/stylesheets/myStyle.css" media="alle" rel="Stylesheet" type="text/css" /> <script src="/javascripts/myJavascript.js" type="text/javascript"></script> Vermeiden Sie nach Möglichkeit die Verwendung von Tabellen Code kopieren Der Code lautet wie folgt:<td Breite="50px" Höhe="10px">...</td> Entfernen Sie alle unnötigen Elemente Dies ist wahrscheinlich der offensichtlichste Tipp von allen, aber er wird auch am leichtesten vergessen. Ich habe bereits erwähnt, dass „weniger mehr ist“. Das bedeutet nicht nur, dass die Software wirklich ein breiteres Publikum anspricht, sondern auch, dass weniger heruntergeladen und verarbeitet werden muss. Wenn Sie wirklich viel Inhalt auf eine Webseite packen müssen, sollten Sie die Seite in zwei, drei oder mehr separate Seiten aufteilen. Einige Tipps zur Optimierung von Webseiten Es gibt viele Möglichkeiten, Ihre Webseiten zu optimieren, darunter das Komprimieren von JavaScript-Dateien, die Verwendung der Hypertext Transfer Protocol (HTTP)-Komprimierung und das Festlegen von Bildgrößen. Komprimieren und minimieren Sie JavaScript-Dateien JavaScript-Dateien können sehr groß sein, daher kann ihr Download in manchen Fällen länger dauern als der aller anderen Komponenten zusammen. Eine Möglichkeit, dieses Problem zu lösen, besteht darin, Ihre JavaScript-Dateien zu komprimieren. Sie können GNU Zip (gzip) verwenden, um diese Aufgabe zu erledigen, da viele Browser diesen Komprimierungsalgorithmus unterstützen. Eine andere Alternative besteht darin, die Datei zu minimieren. Diese Methode entfernt alle unnötigen Zeichen aus dem Code, wie Tabulatoren, neue Zeilen und Leerzeichen. Es entfernt Kommentare und Leerzeichen in Ihrem Code und reduziert so die Dateigröße weiter. Sowohl externe als auch interne Stylesheets können minimiert werden. Die beiden beliebtesten Minimierungstools sind JSMin und YUI Compressor (siehe Ressourcen). Code kopieren Der Code lautet wie folgt:AddOutputFilterByType DEFLATE Text/HTML Text/Nur Text/XML Überlegen Sie auch, was Sie komprimieren möchten. Bilder, Musik und Videos werden bereits bei der Erstellung komprimiert, daher können Sie die Komprimierung auf HTML-, CSS- und JavaScript-Dateien beschränken. Ein weiterer Trick zur Reduzierung des Komprimierungsaufwands besteht darin, <div>-Elemente und Klassennamen in Kleinbuchstaben zu verwenden. Aufgrund der Groß-/Kleinschreibung und der Verwendung verlustfreier Komprimierung unterscheidet sich <header> von <Header> und sie werden in zwei verschiedene Tags komprimiert. Im folgenden Beispiel unterscheidet sich die Klasse „Wichtig“ von der Klasse „Wichtig“ für den Kompressor. Dies bedeutet, dass sie für den Kompressor unterschiedliche Objekte darstellen und daher in zwei unterschiedliche Texte komprimiert werden. Code kopieren Der Code lautet wie folgt:<div>Lies das!</div> <div>Das kostet Sie wertvolle Ladezeit</div> Es scheint nicht wichtig zu sein, auf Einzelheiten zu achten. Aber bei der Optimierung Ihrer Dateien sollten alle feinen Details berücksichtigt werden. Bildgröße festlegen Verwenden von CSS-Imagemaps für dekorative Zwecke Auch die Verwendung von Imagemaps anstelle mehrerer Bilder ist eine Möglichkeit, die Ladezeiten zu verbessern, denn durch das gleichzeitige Herunterladen einzelner Teile eines Bildes wird der Download der gesamten Seite beschleunigt. Alternativ können Sie sogenannte CSS-Sprites verwenden (siehe Verwandte Themen). CSS-Sprites können dazu beitragen, die Anzahl der HTTP-Anfragen zu reduzieren. Ein Bild kann alle grafischen Elemente enthalten, die zum Dekorieren oder Layouten einer Seite erforderlich sind. Mit CSS können Sie (durch Aufrufen bestimmter Positionen und Dimensionen) die für ein bestimmtes Element zu verwendende Zuordnung auswählen. Verzögern Sie das Laden des Skripts so weit wie möglich Ich habe bereits erwähnt, dass das Entfernen völlig unnötigen JavaScript-Codes die Lade- und Verarbeitungszeiten beschleunigen kann. Aber was ist, wenn Ihr Code bereits sehr minimal ist und Sie JavaScript-Code in Ihre Seite einfügen müssen? In diesem Fall besteht eine Möglichkeit zum Erhöhen der Seiten-Downloadgeschwindigkeit darin, das Skript unten auf der Seite zu platzieren, um das Laden zu beschleunigen. Normalerweise können Browser nicht mehr als zwei Objekte parallel herunterladen (von derselben Domäne), und wenn ein Objekt ein JavaScript-Code ist, wird der Download anderer Seitenkomponenten angehalten, bis das Skript heruntergeladen ist. Wenn Sie Ihren JavaScript-Code unten auf Ihrer Seite platzieren, wird er (in den meisten Fällen) zuletzt heruntergeladen, nachdem alle anderen Komponenten heruntergeladen wurden. Verwenden Sie die Firebug-Erweiterung, um langsam ladende Dateien zu verfolgen. Ich wette, Ihre JavaScript-Dateien sind die Dateien, die am langsamsten heruntergeladen werden. Das Minimieren Ihrer JavaScript-Dateien hilft zwar, reicht möglicherweise aber nicht aus. Sie können das Laden von JavaScript mit dem folgenden Codeausschnitt verzögern: Code kopieren Der Code lautet wie folgt:var Verzögerung = 5; setTimeout("schwer();", Verzögerung * 1000); Dieser Code verzögert den Aufruf der Methode heavy() um 5 Sekunden. Sie können diesen Code in Verbindung mit der folgenden Technik verwenden, um das Laden einer gesamten JavaScript-Datei zu verzögern. Laden von JavaScript-Dateien bei Bedarf Um JavaScript bei Bedarf zu laden, verwenden Sie die Funktion import(), wie in Listing 3 gezeigt. Listing 3. Die import()-Funktion Code kopieren Der Code lautet wie folgt:Funktion $import(src){ var scriptElem = document.createElement('script'); scriptElem.setAttribute('src',src); scriptElem.setAttribute('Typ','Text/Javascript'); document.getElementsByTagName('head')[0].appendChild(scriptElem); }</p> <p>// Importieren mit einem zufälligen Abfrageparameter, um Caching zu vermeiden Funktion $importNoCache(src){ var ms = neues Date().getTime().toString(); var seed = "?" + ms; $import(Quelle + Samen); } Überprüfen des Ladens der Funktion: Es ist auch möglich zu überprüfen, ob eine Funktion geladen ist. Wenn nicht, laden Sie die JavaScript-Datei. Nutzen Sie hierzu den Code aus Listing 4. Listing 4. Überprüfen, ob die Funktion geladen ist Code kopieren Der Code lautet wie folgt:if (meineFunktion){ // Die Funktion wurde geladen } else{ // Die Funktion wurde noch nicht geladen, also laden Sie das JavaScript. $import('http://www.yourfastsite.com/myfile.js'); } Hinweis: Sie können das Defer-Attribut verwenden, aber nicht alle Browser (einschließlich Firefox) unterstützen es. Optimieren von CSS-Dateien Verwenden eines Content-Distribution-Netzwerks Verwenden Sie mehrere Domänen für Assets, um die Konnektivität zu erhöhen Verwenden Sie Google Gears, wenn es sinnvoll ist Um zu verhindern, dass Benutzer immer wieder dieselben Inhalte herunterladen müssen, ist die Verwendung von Google Gears (siehe „Verwandte Themen“) eine weitere gute Möglichkeit. Gears ermöglicht Benutzern den Offline-Zugriff auf Webanwendungen, ermöglicht aber auch die Speicherung von Seitenelementen auf dem Computer des Benutzers. Daher können Inhalte, die häufig geladen, aber nicht aktualisiert werden, in der Gears-Datenbank gespeichert werden, einem relationalen SQLite3-Datenbankverwaltungssystem. Alle Holen Sie sich nach der Installation von Gears die Datei gears_init.js, damit Sie problemlos auf die Gears-Factory und die Anwendungsprogrammierschnittstelle (API) zugreifen können. Speichern Sie sie als gears_init.js und referenzieren Sie sie in Ihrem Code wie folgt: Code kopieren Der Code lautet wie folgt:<script type="text/javascript" src="gears_init.js"></script> Um festzustellen, ob Gears installiert ist, verwenden Sie den Code in Listing 5. Listing 5. Feststellen, ob Gears installiert ist Code kopieren Der Code lautet wie folgt:<Skript> wenn (!window.google || !google.gears) { location.href = "http://gears.google.com/?action=install&message=<Willkommensnachricht>" + "&return=<Rückgabe-URL>"; } </Skript> Wenn Gears nicht installiert ist, erhalten Sie über den Code eine URL zum Herunterladen von Gears. Nachdem alle Elemente validiert und Gears installiert wurden, können Sie die äußerst nützliche Datenbankfunktionalität von Gears mit dem JavaScript-Code in Listing 6 testen. Listing 6. Testen der Datenbankfunktionalität Code kopieren Der Code lautet wie folgt:<Skripttyp="text/javascript"> var db = google.gears.factory.create('beta.db'); db.open('Datenbanktest'); db.execute('Tabelle erstellen, wenn nicht vorhanden Test' + ' (Phrasetext, Zeitstempel int)'); db.execute('in Testwerte einfügen (?, ?)', ['Affe!', neues Date().getTime()]); var rs = db.execute('select * from Test order by Timestamp desc');</p> <p>while (rs.isValidRow()) { Alarm(rs.Feld(0) + '@' + rs.Feld(1)); rs.weiter(); } rs.schließen(); </Skript> Dieser Code erstellt eine lokale Datenbank db auf Ihrem Computer oder Server. Wenn die Tabelle „Test“ nicht existiert, erstellen Sie eine und fügen Sie die Testdaten (Monkey! und Zeit) ein. Der Code ruft Daten aus der Datenbank ab und zeigt sie als Warnung im Browser an. Stellen Sie sich die möglichen Ergebnisse vor! Verwenden Sie Bilder im PNG-Format Halten Sie Ajax-Anrufe kurz und präzise Tätigen Sie einen großen Ajax-Aufruf und verarbeiten Sie die Clientdaten lokal Wenn kurze Ajax-Aufrufe keine Option sind oder diese Aufrufe nicht die erwarteten Ergebnisse liefern, sollten Sie einen alternativen Ansatz in Betracht ziehen: Tätigen Sie einen großen Ajax-Aufruf, um alles zu erhalten, was Sie benötigen, und lassen Sie die Daten dann lokal vom Client verarbeiten. Auf diese Weise muss der Client nur einmal warten (um die eingehenden Daten abzurufen), danach (wenn keine Kommunikation zwischen Browser und Server mehr erforderlich ist) erfolgt die Verarbeitung jedoch wesentlich schneller. Natürlich gibt es weitaus mehr Ajax-Optimierungstechniken, als in diesem Tutorial behandelt werden können. Wenn Sie mehr über Ajax erfahren möchten, siehe Ressourcen. Selbstreflexion ist in vielen Situationen eine gute Idee. Glücklicherweise können wir während des Entwicklungsprozesses Tools nutzen, die uns dabei helfen, möglichst objektiv zu reflektieren und zu üben. Der Wert eines Tools wie JSLint (siehe Ressourcen) ist unermesslich, auch wenn auf der Site steht, dass es „frustrierend sein kann“, da es Ihnen alle potenziellen Codefehler offenlegt, was nicht nur die Fehlerbehebung erschwert, sondern auch zu längeren Antwortzeiten führen kann. Verwenden Sie JSLint, um Ihren JavaScript-Code auf Fehler oder schlechte Codierungspraktiken zu überprüfen Sie müssen kein Perfektionist sein, um fehlerfreien JavaScript-Code zu schreiben. Viele Entwickler nehmen die Codeanalyse jedoch nicht ernst und überspringen diesen Schritt im Entwicklungsprozess häufig. Leider sind Fehler und schlechte Codierungspraktiken nicht nur unprofessionell, sondern können Ihre Anwendung auch verlangsamen. Wenn der Browser mit der Beseitigung von Fehlern und mangelhaften Codierpraktiken beschäftigt ist, dauert das Laden nicht nur länger, es kann auch zu schwer zu behebenden Fehlern kommen. Wenn Sie guten Code erhalten möchten, sollten Sie daher die Verwendung eines Codeanalysetools in Betracht ziehen. Es stehen viele verschiedene Tools zur Verfügung, aber das für die Sprache JavaScript am besten geeignete ist JavaScript Lint, auch bekannt als JSLint (siehe Ressourcen). Sie können auch Firebug verwenden, aber JSLint ist formeller und in YSlow enthalten. Suchen Sie nach verwaisten Dateien und fehlenden Bildern Artikel von: developerworks |
<<: So verwenden Sie das href-Attribut des HTML-Tags a, um relative und absolute Pfade anzugeben
>>: So implementieren Sie verteilte Transaktionen in MySQL XA
Vor etwa einem Jahr habe ich einen Artikel geschr...
Die Betriebsumgebung dieses Tutorials: Windows 7-...
Vorwort Beim Teilen einer Seite hoffen Sie, durch...
Das Installationstutorial für MySQL 5.7.27 wird w...
Inhaltsverzeichnis Übergeben von Parametern zwisc...
Vorwort: Vue3.0 implementiert dreidimensionales S...
Ich habe eine Weile nicht mit Servern gearbeitet....
In diesem Artikelbeispiel wird der spezifische Co...
Ich habe einen Server, auf dem mehrere Docker-Con...
Da dies mein erster Beitrag ist, weisen Sie mich ...
In diesem Artikelbeispiel wird der spezifische Im...
Inhaltsverzeichnis 1. Funktionseinführung 2. Schl...
In diesem Artikelbeispiel wird der spezifische Co...
Der Docker Hub, den wir zuvor verwendet haben, wi...
Seit ich die offizielle Version von IE8.0 install...