Natürlich fließen auch einige persönliche Erfahrungen in die Seiten-Performance-Optimierung ein. Ich werde hier nur einige Punkte erwähnen. 1. Anwendung von HTML5-Tags Die Anwendung von HTML5 beschränkt sich nicht nur auf die Anwendung von Tags, sie kann jedoch mit der Anwendung von Tags beginnen. Öffnen Sie Ihren Browser und sehen Sie sich den Quellcode an. Sie werden feststellen, dass <header> <footer> und andere Standards bereits verwendet werden. Sie finden auch einen Abschnitt mit HTML5-Shiv-JS-Code: Code kopieren Der Code lautet wie folgt:<!--[wenn IE 9]> <Skripttyp="text/javascript"> // html5shiv MIT @rem remysharp.com/html5-enabling-script // iepp v1.6.2 MIT @jon_neal iecss.com/print-protector /*@cc_on(function(a,b){function r(a){var b=-1;while(++b<f)a.createElement(e[b])}if(!(!window.attachEvent||!b.createStyleSheet||!function(){var a=document.createElement("div");a.innerHTML="<elem></elem>";return a.childNodes.length!==1}())){a.iepp=a.iepp||{};var c=a.iepp,d=c.html5elements||"abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",e=d.split("|"),f=e.length,g=new RegExp("(^|\\s)("+d+")","gi"),h=new RegExp("<(/*)("+d+")","gi"),i=/^\s*[\{\}]\s*$/,j=new RegExp("(^|[^\\n]*?\\s)("+d+")([^\\n]*)({[\\n\\w\\W]*?})","gi"),k=b.createDocumentFragment(),l=b.documentElement,m=l.firstChild,n=b.createElement("body"),o=b.createElement("style"),p=/print|all/,q;c.getCSS=function(a,b){if(a+""===undefined)return"";var d=-1,e=a.length,f,g=[];while(++d<e){f=a[d];if(f.disabled)continue;b=f.media||b,p.test(b)&&g.push(c.getCSS(f.imports,b),f.cssText),b="all"}return g.join("")},c.parseCSS=function(a){var b=[],c;while((c=j.exec(a))!=null)b.push(((i.exec(c[1])?"\n":c[1])+c[2]+c[3]).replace(g,"$1.iepp_$2")+c[4]);return b.join("\n")},c.writeHTML=function(){var a=-1;q=q||b.body;while(++a<f){var c=b.getElementsByTagName(e[a]),d=c.length,g=-1;while(++g<d)c[g].className.indexOf("iepp_")<0&&(c[g].className+=" iepp_"+e[a])}k.appendChild(q),l.appendChild(n),n.className=q.className,n.id=q.id,n.innerHTML=q.innerHTML.replace(h,"<$1font")},c._beforePrint=function(){o.styleSheet.cssText=c.parseCSS(c.getCSS(b.styleSheets,"all")),c.writeHTML()},c.restoreHTML=function(){n.innerHTML="",l.removeChild(n),l.appendChild(q)},c._afterPrint=function(){c.restoreHTML(),o.styleSheet.cssText=""},r(b),r(k);if(c.disablePP)return;m.insertBefore(o,m.firstChild),o.media="print",o.className="iepp-printshim",a.attachEvent("onbeforeprint",c._beforePrint),a.attachEvent("onafterprint",c._afterPrint)}})(this,document)@*/ </Skript> <![endif]--> Tatsächlich ist es dieser Code, der die Ausführung dieser HTML5-spezifischen Standards auf IE6 bis IE8 ermöglicht. Die COPYRIGHT-Informationen sind weiterhin im Seitencode enthalten und können von Ihnen selbst studiert werden. Das Prinzip ist ganz einfach: Erstellen Sie einfach mit JS Tags, sodass sie von IE-Versionen unter 9 erkannt werden und Sie sie dann direkt verwenden können. Der wichtigste Punkt, auf den Sie bei der Anwendung von Tags achten sollten, ist die Kommunikation ihrer Semantik. Tags wie <header> und <footer> sind leicht zu verstehen, aber Tags wie <section> und <aside> sowie Tags wie <small>, die eine neue Semantik verwenden, sind allesamt eine genauere Untersuchung wert. Auch bei der Überarbeitung der neuen Homepage habe ich auf diesen Aspekt Wert gelegt, allerdings ist die Umsetzung noch nicht ganz optimal. Als nächstes werde ich in diesem Bereich einige Forschungen durchführen. Wenn Sie interessiert sind, können Sie meinem Team beitreten. Erwähnenswert ist, dass eine der Eigenschaften von HTML5 lautet: „Toleranz macht es großartig“ und Tags sehr flexibel verwendet werden können. Sie können beispielsweise Links auf „Blockebene“ verwenden. Personen, die es gewohnt sind, XHTML zu schreiben, werden den folgenden Code sicherlich nicht gewohnt sein und ihn möglicherweise sogar als unangemessen empfinden, aber HTML5 ermöglicht genau dies. Code kopieren Der Code lautet wie folgt:<Artikel> <a href="story1.html"> Bruce Lawson zum sexiesten Mann der Welt gewählt <p><img src="bruce.jpg" alt="gorgeous lovebundle. ">Ein Kongress, der alle Frauen der Welt vertritt, hat Bruce Lawson einstimmig zum sexiesten Mann der Welt gewählt.</p> <p>Weiterlesen</p> </a> </Artikel> Als ich das letzte Mal davon berichtete, sagte ich: „Die Zusammenarbeit im Team erfordert von uns, eine Reihe von Spezifikationen zu formulieren, die uns helfen, den Code bei der Anwendung des HTML5-Standards einheitlicher zu gestalten. Im Allgemeinen entspricht XHTML relativ besser unseren Standards. Auch Alipay verfolgt diesen Ansatz und verfügt über eine Reihe vereinbarter Spezifikationen. Wir können HTML5 auf der Grundlage von XHTML in XHTML5 konvertieren, um es für die Entwicklung in unserem Team besser geeignet zu machen.“ Was denken Sie? 2. Verbesserte Zugänglichkeit und Geschwindigkeit <br />Diesmal ist fast die gesamte Homepage CMS und es besteht die sehr ungewöhnliche Anforderung, dass alle Symbole vom Betreiber geändert werden können müssen. Mit anderen Worten: Es ist unmöglich, die Anzahl der HTTP-Anfragen durch die Verwendung von CSS-Sprites zu reduzieren und so Speicher gegen Geschwindigkeit einzutauschen. Schwester, HTTP ist im Vergleich zu Geschwindigkeit das teuerste. Wie wird die Leistung meiner Seite sein, wenn das der Fall ist? Tatsächlich ist es etwas, das jeder erleben kann. Insgesamt hat man den Eindruck, dass die Homepage mehr Dinge bietet als die vorherige Version, aber die Geschwindigkeit ist überraschenderweise viel schneller. Ein weiteres offensichtliches Gefühl ist, dass die Bilder als letztes herauskommen. Ja, deshalb ist es trotz der vielen Anfragen immer noch schnell. Beim sogenannten verzögerten Laden werden die Bildadressen aller Bilder mit den entsprechenden Tags aufgezeichnet, anschließend mithilfe von JS ein Bild erstellt und der Quellwert in die auf der Seite markierte Adresse geändert. Dies hat zwei Vorteile. Erstens wird zuerst der Textinhalt angezeigt und dann das Bild geladen. Dieser Vorgang des sequentiellen Ladens der Bilder beruhigt den Benutzer psychologisch und gibt ihm das Gefühl, dass die Seite geladen wird. Zweitens werden die Bilder parallel geladen, was die Seite tatsächlich beschleunigt. Dies birgt jedoch ein Risiko: Wenn JS nicht aktiviert ist, können Benutzer das Bild nicht sehen. Daher müssen wir die Benutzerfreundlichkeit der Seite weiter verbessern, damit sie auch ohne JS angezeigt werden kann. Was mir damals in den Sinn kam, war das Tag <noscript>, ein Tag, der speziell für kein JS entwickelt wurde. Deaktivieren Sie jetzt JS in Ihrem Browser und besuchen Sie die Alipay-Homepage erneut. Richtig, sie werden alle angezeigt, oder? Der Zweck wurde erreicht. Die Methode ist wie folgt: Folgen Sie der Struktur von noscript > img und platzieren Sie außerhalb jedes <img>-Tags ein <noscript>-Tag. Wenn JS vorhanden ist, verwenden Sie JS, um das <img> außerhalb des <noscript> zu verschieben. In Bezug auf die technische Implementierung gibt es ein relativ problematisches Problem: Das von Noscript erhaltene innerHTML ist in fortgeschrittenen Browsern wie Firefox ein maskierter Text, im IE jedoch nicht. Das Wichtigste ist, dass es mit innerHTML im IE7 überhaupt nicht erhalten werden kann. Das Entkommen ist eine triviale Angelegenheit und Sie können einen Hack schreiben, um es zu erreichen, aber es nicht zu schaffen, ist das größte Problem. Also müssen wir ein Bild folgendermaßen schreiben: Code kopieren Der Code lautet wie folgt:<noscript data-noscript="https://img.alipay.com/sys/homeindex/style/pb.png"> <img src="https://img.alipay.com/sys/homeindex/style/pb.png" alt="Anfängerkurs: Lernen Sie Alipay schnell und einfach" /> </noscript> Fügen Sie dem Tag <noscript> ein HTML5-Formatattribut hinzu, sodass, wenn innerHTML nicht abgerufen werden kann, dessen data-noscript-Attribut abgerufen werden kann. Erstellen Sie dann ein IMG und legen Sie seinen Quellwert auf den Wert von data-noscript fest. Hier ist der Code, den ich auf der Homepage verwendet habe: Code kopieren Der Code lautet wie folgt:// Escape innerHTML, das von Noscript erhalten wurde HI.text2HTML = Funktion (Text) { wenn (text.indexOf('<') === -1) Text zurückgeben; var tmp = document.createElement("DIV"); tmp.innerHTML = Text; gibt tmp.textContent zurück || tmp.innerText; } // Extrahieren Sie img und hängen Sie es vor den Noscript-Standard an. //Verwende die Methode insertBefore + fragment // Hack ist mit allen Browsern kompatibel HI.ns2Live = Funktion (ns) { var img,f = document.createDocumentFragment(); wenn(ns.innerHTML){ img = D.toDom(HI.text2HTML(ns.innerHTML)); } anders { img = document.createElement('IMG'); img.src = ns.getAttribute('data-noscript'); } f.AnhängenKind(img); ns.parentNode.insertBefore(f, ns); } Andererseits ist die Login-Kontrolle von Alipay immer noch sehr schlecht gemacht und kann ohne JS einfach nicht implementiert werden. Daher ist diese Optimierung zunächst nur mühsam durchzuführen und das Control Panel muss noch aktualisiert werden. Das macht mich sehr traurig. 3. Optimierung, Optimierung, Optimierung <br />Tatsächlich wurden in dieser Revision nicht alle Dinge optimiert, die wir optimieren wollten. Beispielsweise kann der Cache statischer Dateien tatsächlich auf 1 Jahr eingestellt werden (warum nicht 10 Jahre wie bei Yahoo? Tatsächlich ist das eine Regelung, aber ich habe den Namen der Organisation vergessen. Haha); zum Beispiel Leistungsoptimierung von JS und CSS, Bildkomprimierung, Verbesserung der Zugänglichkeit, Schriftartverbesserung usw. Da gibt es einiges und auch noch viele Punkte, die auf der Homepage optimiert werden können. Aber dieses Mal wurde das Projekt aus irgendeinem Grund eine Woche früher veröffentlicht und war nicht vollständig optimiert. Es gibt zwar nach der Veröffentlichung Upgrade-Pakete, aber die Leute in den entsprechenden Produktlinien interessieren sich nicht wirklich für diese Leistungsoptimierungen. Als Student der Architekturgruppe habe ich da eigentlich nichts zu sagen. Es ist ja ein Produkt aus der Feder anderer und die wollen das nicht machen. Ich empfehle Ihnen dringend, einen Blick auf die Vorschläge von Google zu werfen. Fast alle meine Optimierungen basieren auf diesem: http://code.google.com/speed/page-speed/docs/overview.html AbschlussOkay, das ist alles, was ich zu sagen habe. Es gibt nur zwei Hauptpunkte, die anderen werden dazwischengemischt, ohne vollständig erläutert zu werden. Es wird noch an vielem mehr gearbeitet. Ich war in letzter Zeit einfach sehr faul und es ist viel passiert. Ich bin zu müde, um Blogs zu schreiben. Man sollte trotzdem immer noch Blogs schreiben und zwischendurch auch mal zusammenfassen, sonst versagt das Gehirn schnell und man schafft es nicht mehr, einzelne Wörter zu einem ganzen Satz aneinanderzureihen. Für diese Überarbeitung wurden die meisten HTML/CSS-Codes von Praktikanten geschrieben, was ich letztes Mal auch auf Weibo erwähnt habe . Ich bin hauptsächlich für JS, die allgemeine Übersicht und Optimierungsaspekte verantwortlich. Ich finde, dass die jetzigen Praktikanten alle sehr gut sind. Als ich noch Junior war, konnte ich nicht einmal Code schreiben. Ha ha… |
<<: Nach dem Klickereignis des HTML-Hyperlinks a wird zur Adresse gesprungen, auf die href zeigt.
>>: Details zu Makrotasks und Mikrotasks in JavaScript
Es ist sehr einfach, eine Scala-Umgebung in Linux...
1. Die ENV-Anweisung im Dockerfile wird verwendet...
Inhaltsverzeichnis brauchen Daten abrufen und übe...
1. Umgebungsbeschreibung (1) CentOS-7-x86_64, Ker...
Wenn Neulinge Div+CSS entwickeln, müssen sie die ...
Meine ursprüngliche Absicht war, die $notify-Bena...
Inhaltsverzeichnis 1. Projektbeschreibung 1.1 Hin...
Dieses Mal werde ich über die Fähigkeiten zur Ent...
Herstellen einer Verbindung mit MySQL Hier verwen...
Überwachungsmethode in Vue betrachten Beachten Na...
Das mobile Vue-Terminal bestimmt die Richtung, in...
Inhaltsverzeichnis Ziehen Sie das Rocketmq-Image ...
1. Geben Sie die Konfigurationsdatei der Yum-Quel...
Inhaltsverzeichnis Vorwort 1. Art von 2. Instanz ...
In diesem Artikelbeispiel wird der spezifische Ja...