Heim >Backend-Entwicklung >PHP-Tutorial >18 kritische Versehen in der Webentwicklung

18 kritische Versehen in der Webentwicklung

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌Original
2025-02-20 09:15:11512Durchsuche

18 kritische Versehen in der Webentwicklung

18 kritische Versehen in der Webentwicklung

In den letzten Jahren hatte ich die Gelegenheit, an einigen interessanten Projekten zu arbeiten, komplexer Natur mit einer fortlaufenden Entwicklung, die ständig aktualisiert, neu aufgestellt und neue Funktionen hinzufügt.

Dieser Artikel wird die größten Codierungsversuche abdecken, die die meisten PHP -Entwickler im Umgang mit mittleren und großen Projekten erstellen. Überwachungen wie nicht unterscheiden zwischen Entwicklungsumgebungen oder nicht implementieren von Caching und Backup.

Die folgenden Beispiele sind in PHP, aber die Idee hinter jedem Problem ist generisch.

Die Wurzel dieser Probleme liegt hauptsächlich im Wissen und der Erfahrung der Entwickler, insbesondere im Mangel daran. Ich versuche nicht, jemanden zu verprügeln, ich betrachte mich nicht als perfekter Entwickler, der alles weiß, also tragen Sie es mit mir.

Nach meiner Erfahrung konnten wir diese Probleme in drei Hauptgruppen kategorisieren: Entwurfsebene, Anwendungsebene und Datenbankebene. Wir werden jeden einzelnen separat zerlegen.

Key Takeaways

  • Aktivieren Sie immer die Fehlerberichterstattung während der Entwicklung, um Probleme frühzeitig zu fangen und zu beheben, um eine robuste Anwendungsfunktionalität zu gewährleisten.
  • Implementieren Sie das Caching strategisch über verschiedene Ebenen (Server, Anwendung, Datenbank), um die Leistung und die Benutzererfahrung zu verbessern.
  • Einhalten Sie sich an Best Practices und etablierte Designmuster, um das Rad neu zu erfinden und unnötige Risiken in Ihre Anwendung einzuführen.
  • Integrieren Sie automatisierte Tests und kontinuierliche Integration, um die Codequalität aufrechtzuerhalten und reibungslose Bereitstellungsprozesse zu erleichtern.
  • Führen Sie regelmäßige Code -Bewertungen und Audits in Ihrem Team durch, um Konsistenz zu gewährleisten und potenzielle Fehler zu fangen, bevor sie problematisch werden.
  • Bereiten Sie sich auf die Worst-Case-Szenarien vor, indem Sie defensive Code schreiben, der mögliche Fehler, Verstöße und Fehler effektiv erwartet und behandelt.

Beaufsichtigung der Anwendungsebene

Entwicklung mit Fehlerberichten aus

18 kritische Versehen in der Webentwicklung

Die einzige Frage, die ich stellen kann, ist: Warum? Warum machen Sie die Fehlerberichterstattung bei der Entwicklung einer Anwendung nicht aus?

PHP hat viele Fehlerberichterstattung, und alles sollte in der Entwicklungsphase eingeschaltet werden.

Wenn Sie der Meinung sind, dass Fehler niemals auftreten werden, kodieren Sie für das ideale Szenario, das nur in einer idealen Welt auftritt.

Fehlerberichterstattung und Anzeige dieser Fehler sind auch nicht gleich. ERROR_REPORTING () legt die Fehlerstufe (z. B. Beachten, Warnungen, tödliche Fehler) und display_errors steuert, ob diese Fehler ausgegeben werden oder nicht.

Fehlerberichterstattung sollte immer die höchste Einstellung in der Entwicklung haben: ERROR_REPORTING (E_ALL); und ini_set ('display_errors', true);

Hinweis: E_ALL ist der höchste seit PHP 5.4, da E_strict -Fehler in PHP 5.4 Teil von E_all wurden. Wenn Sie eine ältere PHP -Version als 5.4 verwenden, verwenden Sie ERROR_REPORTING (e_all | e_strict); Auch strenge Fehlerwarnungen einzubeziehen.

Unterdrückung von Fehlern

Unterdrückung von Fehlern unter Verwendung des @ -Operators ist noch schlechter als überhaupt nicht einzuschalten, da Sie den Schmutz unter dem Teppich bewusst fegen. Sie wissen, dass der Fehler stattfindet, Sie möchten ihn nur verbergen, die Aufgabe schließen und früh nach Hause gehen. Was Sie nicht erkennen, ist, dass es später viel größere Konsequenzen haben wird.

Sie können hier eine eingehende Erklärung dazu lesen.

nirgendwo im Code

protokollieren

Die Entwicklung eines Projekts muss von Anfang an bei der Anmeldung von Anfang an geschehen. Am Ende können Sie nicht einfach die Protokollierung einschrauben.

Die meisten Entwickler verwenden die Protokollierung auf die eine oder andere Weise, aber fast keiner von ihnen nimmt sich die Zeit, diese Protokolle tatsächlich auf Fehler zu überprüfen. Was ist der Grund für die Protokollierung, wenn niemand die Protokolle ansieht?

PSR-Empfehlungen für die Protokollierung, PSR-3, um genau zu sein, und in diesem ausgezeichneten Artikel wird erläutert, wie die PSR-3-Protokollierung implementiert wird.

Implementieren von Caching

nicht implementieren

Caching kann in einer Anwendung auf vielfältige Weise auf vielfältiger Ebene durchgeführt werden, z. B. auf Serverebene, Anwendungsebene, Datenbankebene usw.

Auch

Caching sollte von Anfang an implementiert werden. Sie können es immer in der Entwicklung deaktivieren, aber stellen Sie sicher, dass alles funktioniert, sobald es in eine Produktionsumgebung gedrängt wird.

Auf einer Serverebene können Sie Lack verwenden, der ein umgekehrter HTTP -Proxy ist. Es wird Dateien im Speicher gespeichert und sollte vor dem Webserver installiert werden.

Um PHP zu beschleunigen, können Sie einen Opcode -Cache installieren/aktivieren, der die Kompilierung in Byte -Code von PHP -Skripten optimiert. Für PHP 5.5 und später wird ein Opcode -Cache bereits im Kern als Opcache kompiliert.

Sie können in diesem Artikel ausführlich darüber lesen: SitePoint PHP-Unestging Opcache.

Vor PHP 5.5 können Sie APC verwenden, das auch Benutzer -Cache -Funktionalität hat.

Auf einer Anwendungsebene können Sie APCU verwenden, der von APC extrahierte Benutzer -Cache, ein weiterer Cache, der eine ähnliche Funktionalität wie APCU hat, oder Memcached, ein verteiltes Caching -System und es hat eine solide PHP -Unterstützung. Memcached kann auch verwendet werden, um Datenbankabfragen zu unterbrechen.

Es gibt einige Techniken bei der Implementierung von Caching in einer Anwendung. Eine gute Praxis ist es, Daten zu untersuchen, die sich nicht sehr oft ändern, aber wiederholt abgefragt werden.

Cache -Datenbankabfragen stark, da die Datenbank immer der größte Engpass in jeder PHP -Anwendung ist.

ignorieren Best Practices und Designmuster

Wie oft haben Sie jemanden gesehen, der seinen eigenen Passwortverschlüsselungsalgorithmus implementiert? Leider geschieht dies heute noch, weil der Mangel an Wissen oder gefährlicher wegen einer „Ich kenne es besser“.

Nun, ich hasse es, Ihnen die schlechten Nachrichten zu bringen, aber 99% der Zeit, die Sie nicht besser wissen.

Diese Best Practices und Design -Muster wurden von Software Engineers, die intelligenter als Sie und mich sind, aus einem bestimmten Grund gedacht und erstellt. Die alleinige Aufgabe des Entwicklers besteht darin, das richtige Muster für den Job auszuwählen.

Es gibt viele Bücher und Ressourcen zu diesem Thema. Ich werde zwei erwähnen:

  1. Muster der Enterprise -Anwendungsarchitektur von Martin Fowler
  2. PHP -Objekte, Muster und Praxis von Matt Zandstra

Verwendung automatisierter Tests

nicht

Tests sollten für jede Funktion der Webanwendung hinzugefügt werden, aber Tests sind für nichts gut, genau wie Protokolle, wenn niemand sie ansieht und den Testcode tatsächlich ausführt, um zu sehen, ob etwas bricht.

manuelles Ausführen von Tests ist ein lästiger Prozess. Glücklicherweise gibt es „ein App Tool dafür“. Tatsächlich gibt es viele Tools, die dazu beitragen können, Ihre Tests zu automatisieren, eine ganze Praxis, die als kontinuierliche Integration bezeichnet wird.

Ein solches Tool, das in der PHP -Community häufig verwendet wird, heißt Jenkins, ein CI -Server und kann viel mehr als nur eine Anwendung testen. Sebastian Bergmann hat eine hervorragende Vorlage für Jenkins geschaffen, die speziell für die Arbeit mit PHP -Projekten konstruiert wurden.

Wenn Sie dies zu überwältigend finden, schreiben Sie zumindest Unit -Tests für Ihre Anwendung mit Phpunit, Behat oder PHPSPEC. Es mag anfangs viel Arbeit erscheinen, aber es ist unzählige Male, dass Tests auf lange Sicht Projekte helfen.

Überprüfung / Auditing -Code

nicht überprüft / auditieren

18 kritische Versehen in der Webentwicklung

in einem Team arbeiten kann eine Herausforderung sein, insbesondere wenn jedes Teammitglied an verschiedene Programme gewöhnt ist und ohne gute Spezifikation ein Projekt sehr schnell von Seitwärts gehen kann.

Wenn Sie sich in einem Team befinden und den Code des anderen nicht inspizieren, sollten Sie es wirklich tun. Genau wie Unit -Tests hilft es einem Projekt, sauber und konsistent zu bleiben.

Der Unterschied zwischen Überprüfung und Audit ist die Zeit, in der Sie den Code inspizieren. Die Überprüfung kommt normalerweise vor, bevor ein Code mit der Codebasis und der Prüfung nach dem Einfügen des Codes zusammengefasst wird.

Bewertung ist eine viel bessere Sache, da Sie die Möglichkeit haben, über den Code zu sprechen, Verbesserungen oder Korrekturen vorzuschlagen, bevor er mit dem Code der anderen Teammitglieder zusammengeführt wird.

Der Nachteil von Bewertungen ist, dass es die Entwicklung blockiert, denn vor jeder Zusammenführung (schließlich sind alle Tests grün) müssen mindestens zwei Entwickler den Code besprechen, und hier kommt das Audit ins Spiel.

Audit kommt nach dem Zusammenführen von Post und es ist nicht blockierend, aber es ist deutlich weniger mächtig, da es die Gelegenheit verpasst, schon früh Bugs zu fangen.

Audit ist immer noch besser als den Code überhaupt nicht zu inspizieren.

Um diesen Prozess so reibungslos wie möglich zu machen, können Sie das Tool namens Phabricator verwenden, das speziell für diesen Zweck von den guten Ingenieuren von Facebook erstellt wurde. Es unterstützt beide Code -Inspektionsstrategien.

codieren für das ideale Szenario

Finden Sie sich jemals in Fällen oder gehört von Fällen, in denen ein unbedeutender Boilerplate -Code zusammengeführt wurde und die Hölle losbrach? Ich habe es sicher getan.

Dies ist die meiste Zeit, da Entwickler faul sind und Code für das ideale Szenario schreiben, in dem die Datenbank fehlschlägt, PHP-fatale Fehler und Serverhacking nicht existieren.

Code sollte mit dem genau entgegengesetzten Szenario geschrieben werden, Entwickler sollten Code für das schlechteste Szenario schreiben, an das sie sich vorstellen können, und selbst dann wird der Code einen obskuren Eckfall abdecken, in dem der Benutzer in einem $ tippt Zeichen und hat sofortigen vollständigen Administratorzugriff.

unter der Annahme, dass Ihr Server nicht gehackt wird oder Ihr Code irgendwann nicht brechen wird und Ihre Datenbank immer in Betrieb ist, ist einfach falsch. Der Produktionscode sollte diese Szenarien abdecken und Fehler entsprechend protokollieren.

In PHP ist es so einfach, Fehler zu begehen, ohne es zu merken. Dies liegt hauptsächlich an schlechten Entscheidungen für Sprachentwurf, die in der Vergangenheit getroffen und nicht rechtzeitig korrigiert wurden.

PHP möchte es den Entwicklern erleichtern, nicht über Sicherheit, Codierungen und Eckfälle nachzudenken, in denen Entwickler dies tatsächlich sehr bewusst sein sollten und immer defensive Programme üben.

Nicht korrekte OOP -Prinzipien

verwenden

Die meisten PHP -Entwickler, die neu in PHP sind, verwenden keine objektorientierte Programmierung in ihrem Code, da das Konzept zunächst etwas schwer zu verstehen ist. OOP wurde erstmals in den 1960er Jahren verwendet und im Laufe der Jahre ständig verfeinert. Es gibt eine Menge Informationen darüber im Web.

OOP ist auch viel mehr als nur in Klassen organisierte Verfahrenscode.

Das Konzept von Objekten, Eigenschaften, Methoden, Vererbung, Kapselung usw. ist ein integraler Bestandteil von OOP.

Ein Entwickler, der diese Prinzipien verwendet Ich habe keine hart codierten Abhängigkeiten und ist leicht zu erweitern und aufzubauen.

Alejandro Gervasio deckt diese Prinzipien von oben nach unten ab.

Es ist nie zu spät, über OOP zu erfahren und sauberen Code zu schreiben, der nicht auf harten Abhängigkeiten beruht (ansehen Sie Sie, PHP -Frameworks).

„On-the-Fly“ -Codierung

Was die meisten Entwickler tun, wenn sie bei „Schnell, der Kunde benötigt diese Funktion so schnell wie möglich. der Live -Server. Dies wird auf der Fliege Codierung oder Cowboy-Codierung bezeichnet.

Wie in jeder anderen Branche sollten auch Workflows und gesunde Prozesse in der Softwareentwicklung implementiert werden, damit ein Projekt erfolgreich ist.

PHP und dynamische Sprachen im Allgemeinen fördern schnelle Änderungen an der Codebasis und sehen die Ergebnisse der Modifikation sofort, aber diese Änderungen sollten in einer Produktionsumgebung begrenzt sein.

Es sollten nur kritische Fehler festgelegt und direkt auf den Produktionsserver weitergegeben werden. Für den Rest sollte ein Workflow implementiert werden, wie z. B. Githubs Gabel und Pull -Anfrage oder Gitflow. Weitere Informationen zu Gits mit Git finden Sie hier: https://www.atlassian.com/git/workflows.

Manager und Kunden, die der Meinung sind, dass diese Prozesse unnötig sind, sollten für etwas anderes ausgebildet werden. Ich habe noch nie einen Kunden getroffen, der nicht ein paar Stunden oder einen Tag kaum erwarten konnte, um die erforderlichen Schritte durchzuführen, um live eingesetzt zu werden.

Eine andere Sache, die Sie beachten sollten: Verwechseln Sie die kontinuierliche Lieferung nicht mit Cowboy -Codierung und chaotischem Management. Bei der kontinualen Lieferung geht es genau um die Implementierung und Optimierung des Entwicklungsworkflows, damit Code so schnell wie möglich in der Produktionsumgebung eingesetzt werden kann.

Datenbankebene Versehen

18 kritische Versehen in der Webentwicklung

Unterscheidung zwischen Lese- / Schreibabfragen

nicht unterscheidet

Um ein langjähriges komplexes Projekt zu unterstützen, muss sich Skalierung im Hinterkopf jedes Entwicklers befinden. 99% der Zeit, in der eine Webanwendung nicht skalieren muss, da sie diesen Datenverkehr nicht erreicht.

Wenn Sie sicher wissen, dass die Webanwendung von vielen verwendet wird, z.

Warum sollten Sie Abfragen lesen / schreiben?

Die Datenbank ist immer der erste Engpass in jeder Anwendung. Es wird der erste sein, der unter großem Verkehr versagt. Um den Datenverkehr auf mehrere Datenbankserver zu laden, verwenden Entwickler entweder Master - Slave oder Master - Master Replication. Master - Slave ist der beliebtere, der besagt, dass jede ausgewählte Anweisung an den Slave -Datenbankserver (n) und andere an den Master weitergeleitet werden muss, um den Verkehr auszugleichen.

Wenn Ihre Anwendung die Trennung zwischen Lese- und Schreibabfragen nicht kennt, weiß sie nicht, welcher Datenbankserver eine Verbindung hergestellt werden soll.

Denken Sie daran, wenn Sie wissen, dass Sie irgendwann einen Master -Slave -Replikationsschema einrichten müssen.

Nur Codierung für eine Datenbankverbindung

Dies bezieht sich stark auf die oben genannte Aufsicht, aber manchmal können Entwickler andere Gründe haben, um eine Verbindung zu mehreren Datenbanken herzustellen. Wenn Sie beispielsweise Benutzerprotokolle, Aktivitätsströme, Analysen oder andere Daten aufbewahren, in denen Sie wissen, dass die Lese-/Schreibvorgänge häufig erfolgen, ist es gut, diesen Datenverkehr auf einen anderen Datenbankserver zu laden.

Stellen Sie sicher, dass Sie eine Datenbankbibliothek verwenden, mit der Sie eine Verbindung zu mehreren Datenbankservern herstellen können. Es ist einfach, zwischen ihnen zu wechseln. Eine gute Lösung besteht darin, PDO zu implementieren und Aura.sql zu verwenden, das PDO erweitert.

Testen Sie keine Abfragen für Exploits

Diese Aufsicht bezieht sich auf die obige Aufsicht „Codierung für das ideale Szenario“. Gleiches Ding, andere Plattform.

Wenn Sie Ihre Datenbank (und Ihre Anwendung) nicht auf Exploits testen, wird ein Hacker, und er kann erfolgreich sein.

Datenbanken sind anfällig für eine ganze Reihe von Exploits. Am häufigsten sind SQL -Injektionsangriffe.

Verwenden Sie dieses Cheat -Blatt und führen Sie die Abfragen über die Datenbankzugriffsbibliothek Ihrer Anwendung aus. Schreiben Sie diese Aussagen in Feldern auf Ihrem Front-End wie Benutzername, Kennwortfelder auf einer Anmeldeseite.

Wenn keine der Fragen durchläuft, können Sie sich ein Bier kaufen und feiern.

Hinzufügen von Tabellen

keine Indizes hinzufügen

Indexe sind wie der TOC einer Tabelle, es handelt sich um einen Leistungsschub und sollte zu jeder Tabelle zu den Spalten hinzugefügt werden, auf denen die Abfrage ausgeführt wird (z. B. die Spalten nach der Wherdy -Klausel).

Es steckt eine ganze Theorie hinter Datenbankindizes, wann sie erstellt werden sollen, auf welchen Spalten und was abdecken soll. Eine ganz separate Artikelserie wurde darüber geschrieben.

Verwenden von Transaktionen

nicht

Datenintegrität ist für Webanwendungen sehr wichtig. Ganze Websites können brechen, wenn die Daten falsch behandelt werden.

Sie verwenden Transaktionen für verwandte Daten, die miteinander gehandhabt werden, entweder bestehen oder gelöscht.

Sie speichern beispielsweise Daten zu einem Benutzer wie: E-Mail, Benutzername Passwort in Tabelle 1 und Profildaten wie Vorname, Nachname, Geschlechtsalter usw. in Tabelle 2.

Wenn ein Benutzer sein Konto löschen möchte, sollte dies eine Operation zum Ausführen der SQL -Abfrage unter Verwendung von Transaktionen sein. Wenn Sie keine Transaktionen verwenden, riskieren Sie, die Datenintegrität zu verlieren, da die Vorgänge für die Daten separat ausgeführt werden.

Wenn das Löschen der Daten aus

Tabelle 1 erfolgreich ist, jedoch in Tabelle 2 fehlschlägt, bleibt die Profildaten für den Benutzer in der Datenbank und schlimmer, es wird nicht angeschlossen werden Alles, es wird verwaist.

Durch die Verwendung von Transaktionen wird dies nicht geschehen, da der gesamte Vorgang nur dann erfolgreich ist, wenn alle separaten Vorgänge (z. B. Daten aus Tabelle 1 und Tabelle 2) in der Transaktion erfolgreich sein .

sichere sensible Daten nicht sicheret

18 kritische Versehen in der Webentwicklung

Kennwörter im Klartext oder das Rollen Ihres eigenen Verschlüsselungsalgorithmus im Jahr 2014 ist inakzeptabel. Die PHP -Community ist inzwischen genug gereift, um es jetzt besser zu wissen.

Dennoch gibt es wahrscheinlich Tausende von Datenbanken, in denen sensible Daten unverschlüsselt gespeichert werden, um von Hackern gestohlen zu werden.

PHP 5.5 hat bereits starke Hashing -Funktionen hinzugefügt, nur um es Passwort zu nennen. Es ist wirklich einfach zu verwenden - Sie erstellen mit dieser Methode einen Hash aus dem Klartextkennwort:

$hash = password_hash( $password, PASSWORD_BCRYPT );

Hinweis: Es ist nicht erforderlich, dieses Passwort zu salzen, da es bereits für Sie behandelt wird.

$ Hash in der Datenbank speichern, dann überprüfen Sie den Hash mit dieser Methode:

if ( password_verify( $password, $hash ) ) { ... }

Hinweis: Wenn Sie keinen PHP 5.5 haben (Sie sollten inzwischen wirklich), können Sie die CODTWORD_COMPAT -Bibliothek verwenden, die genau die gleichen Methoden implementiert.

Die Bearbeitung von Finanzdaten ist viel schwieriger, da Sie PCI -Einhaltung auf Server-, Anwendungs- und Datenbankebene haben müssen. Ein detaillierterer Artikel ist bereits hier zu diesem Thema geschrieben: SitePoint PHP-PCI-Konformität und der PHP-Entwickler.

Beaufsichtigung des Anwendungsdesigns

nicht zwischen Entwicklungsumgebungen

unterscheiden

Ich habe viele Entwickler und sogar kleine Teams gesehen, die schlechte Entwicklungsumgebungen für sich selbst eingerichtet haben.

Arbeiten Sie beispielsweise an einer neuen Funktion oder Behebung eines Fehlers und FTING der Dateien direkt auf der Live -Website. Das ist auf so vielen Ebenen falsch.

Es gibt eine unendliche Anzahl von Workflows, die Teams erstellen können, aber die klassische für die Webentwicklung besteht darin, mindestens drei Umgebungen zu verwenden: Entwicklung, Inszenierung und Produktion.

Eine Entwicklungsumgebung kann für jeden Programmierer lokal sein. Inszenierung und Produktion sind normalerweise fern und teilen einige Teile zwischen ihnen. Die Entwicklung dient zur Codierung, Staging dient zum Testen und schließlich für die Produktion dient zum Verbrauch.

Die Aufsicht erfolgt, wenn diese Umgebungen nicht auf die gleiche Weise eingerichtet sind. Zum Beispiel unterscheidet sich jeder Entwickler, der eine andere Version von PHP oder die Staging -Konfiguration ausführt, von der Produktion.

Ratet mal, was passiert? Sie haben Recht. Alles wird in der Entwicklung und sogar in der Inszenierung funktionieren, und wenn Sie es auf den Produktionsserver schieben, bricht die Hölle los, was zu langen Nächten und viel Koffein führt.

Kein Wunder, dass die häufigste Phrase in Entwicklungskreisen: „Es funktioniert für mich.“

Also, was ist die Lösung? Stellen Sie sicher, dass in jeder Umgebung alles auf die gleiche Weise eingerichtet ist. Das Betriebssystem sollte gleich sein, PHP, Datenbank, Webserver, alle sollten die gleiche Version in den Umgebungen haben.

Seit der Erstellung von Vagrant, Docker und VirtualBox ist es jetzt sehr einfach, identische Umgebungen mit der gleichen genauen Konfiguration auf jedem einzelnen zu erstellen. Wenn Sie diese Tools zuvor noch nicht verwendet haben, sollten Sie anhielten, was Sie tun, und sie sofort verwenden.

Keine Sicherung

18 kritische Versehen in der Webentwicklung

Alles läuft gut, die Website ist live, wird pünktlich gestartet, alles ist in Betrieb, Benutzer verbrauchen die schönen Daten. Nom, nom, nom ... bis du um 3 Uhr morgens eine E-Mail erhalten hast.

Backup, genau wie Protokollierung, Zwischenspeicherung, Sicherheit und defensive Programmierung sollte bei der Entwicklung einer Webanwendung ein wesentlicher Bestandteil sein, aber die meisten Entwickler (oder Sysadmins) vergessen dies.

Backups sollten ebenfalls automatisiert werden, oder wenn dies nicht möglich ist, sollte mindestens eine wöchentliche manuelle Sicherung erledigen. Jede Sicherung ist besser als keine Sicherung.

Speichern Sie Ihre Codebasis in der Versionskontrolle und verwenden Sie ein verteiltes Versionskontrollsystem wie Git oder Mercurial. Dieses Setup stellt Code -Stützpunkte sehr überflüssig, da jeder Entwickler, der an dem Projekt arbeitet, über eine Version der Codebasis verfügt. Speichern Sie die Codebasis auch auf Github oder Bitbucket, sie haben Backups.

Sichern der Datenbank ist wichtiger, da im Benutzer erstellte Inhalte erstellt werden. Speichern Sie immer die tatsächlichen Daten und die Sicherung an verschiedenen Stellen.

Nicht -Sicherung von Daten können Unternehmen ruinieren, und das wird dies tun - siehe den berühmten Fall von Ma.Gnolia, einer der besseren sozialen Lesezeichenwebsites. Wired hat eine Titelgeschichte zur gesamten Katastrophe.

Keine Überwachung

18 kritische Versehen in der Webentwicklung

"Alles ist erstaunlich und niemand ist glücklich." - Louis C.K.

Sie sind nicht glücklich, weil Sie nicht wissen, was los ist. Die Implementierung eines intelligenten Überwachungsrahmens für Ihre Anwendung ist sehr wichtig. Überwachung beantwortet die folgenden Fragen:

  1. Hat jemand auf den Hauptanwendungsserver zugegriffen?
  2. sind die Server unter starker Last?
  3. Müssen wir auf einen anderen Datenbankserver skalieren?
  4. Wo fällt die Anwendung aus?
  5. funktioniert es offline oder funktioniert es nicht nur für mich?

Es ist wichtig, die Antworten auf diese Fragen zu einem bestimmten Zeitpunkt zu kennen, und mit Echtzeitüberwachung werden Sie. Um dies zu erreichen, sollten Tools wie Nagios oder New Relic Teil der Infrastruktur Ihrer Anwendung sein.


Schlussfolgerung

Verwenden Sie dieses Wissen, um ein besserer Programmierer zu sein. Denken Sie an diese Aufsicht und versuchen Sie, sie nicht zu begehen. Die Beobachtungen der Anwendungs- und Datenbankebene sind die wichtigsten, an die man sich erinnern kann.

Backup ist sehr wichtig, üben Sie immer defensive Programme und seien Sie auf das Schlimmste vorbereitet. So funktioniert die Webentwicklung. Die Programmierung ist schwierig, aber wenn richtig gemacht, viel Spaß.

Checkliste

unten finden Sie eine Checkliste aller in diesem Artikel gefundenen Versehen. Sehen Sie, wie viele Sie jetzt abkreuzen können und immer versuchen, sie alle abzukreuzen.

  1. Ist die Fehlerberichterstattung über und zeigt Fehler in der Entwicklung und aus der Produktion an?
  2. unterdrücken keine Fehler in Ihrem Code.
  3. implementieren Sie ein Protokollierungs -Framework.
  4. Verwenden Sie eine Caching -Strategie.
  5. Denken Sie daran und verwenden Sie Programmierdesignmuster und Best Practices.
  6. Verwenden Sie Tests in Ihrem Code und versuchen Sie, diese Tests jedes Mal zu automatisieren, wenn eine Änderung in der Codebasis auftritt.
  7. code von 🎜> prüfen oder zumindest prüfen Teammitglieder.
  8. Defensivprogrammierung praxis.
  9. Lerne OOP -Prinzipien richtig.
  10. einen soliden Workflow und eine solide Prozesse für die Entwicklung und Bereitstellung von Code.
  11. Unterscheiden Sie zwischen Abfragen "Lese- / Schreibdatenbank".
  12. Verwenden Sie eine solide Datenbankbibliothek, die eine Verbindung zu mehreren Datenbanken herstellen kann.
  13. Test SQL -Abfragen für Exploits.
  14. Lernen und Verwenden von Indizes in Datenbanktabellen
  15. Verwenden Sie Datenbanktransaktionen.
  16. sichern sensible Daten in der Datenbank.
  17. Verwenden Sie verschiedene Codierungsumgebungen: Entwicklung, Inszenierung, Produktion.
  18. Implementieren Sie eine Sicherungs- und Überwachungsstrategie.

häufig gestellte Fragen (FAQs) zu Versehen von Webentwicklung

Was sind einige häufige Versehen in der Webentwicklung? Einige häufige Aufsichtsunternehmen sind nicht optimiert, mobile Geräte zu optimieren, die SEO zu vernachlässigen, die Geschwindigkeit und Leistung der Website zu ignorieren, keine ordnungsgemäße Entwicklungsumgebung einzurichten und die Kompatibilität des Cross-Browsers nicht zu berücksichtigen. Diese Aufsicht können zu einer schlechten Benutzererfahrung führen und die Leistung und das Ranking der Website in Suchmaschinen negativ beeinflussen.

Wie kann ich eine moderne Webentwicklungsumgebung einrichten? Die Entwicklungsumgebung umfasst mehrere Schritte. Zunächst müssen Sie einen guten Texteditor wie Visual Studio Code oder Sublime Text installieren. Installieren Sie als nächstes Node.js und NPM, die für die moderne JavaScript -Entwicklung wesentlich sind. Sie sollten auch ein Versionskontrollsystem wie Git einrichten. Erwägen Sie schließlich, einen Paketmanager wie Garn oder NPM und einen Taskläufer wie Gulp oder Webpack zu verwenden.

Was ist die Bedeutung der mobilen Optimierung in der Webentwicklung? Entwicklung als immer mehr Benutzer zugreifen von ihren mobilen Geräten auf Websites. Eine Website, die für Mobilgeräte nicht optimiert ist, kann zu einer schlechten Benutzererfahrung führen, die zu geringeren Engagement- und Conversion -Raten führen kann. Die mobile Optimierung besteht darin, die Website so zu entwerfen, dass sie reagiert, was bedeutet, dass sie sich an verschiedene Bildschirmgrößen anpasst und sicherstellt, dass sie schnell auf mobilen Geräten geladen wird.

Wie kann ich die SEO meiner Website verbessern? Stellen Sie zunächst sicher, dass Ihre Website von Suchmaschinen leicht krabbelbar ist. Dies beinhaltet die Verwendung geeignete HTML -Tags, das Erstellen einer Sitemap und die Verwendung von Robots.txt -Dateien. Optimieren Sie Ihren Inhalt als Nächstes, indem Sie relevante Schlüsselwörter verwenden, hochwertige Inhalte erstellen und Meta-Tags verwenden. Erwägen Sie auch, das Schema -Markup zu verwenden, um Suchmaschinen mehr Informationen bereitzustellen. Eine langsam laden-Website kann die Benutzer frustrieren und zu höheren Absprungraten führen. Darüber hinaus betrachten Suchmaschinen wie Google die Geschwindigkeit der Website als Rangfaktor. Sie können die Geschwindigkeit und Leistung Ihrer Website verbessern, indem Sie Bilder optimieren, CSS- und JavaScript-Dateien minifizieren und ein Inhaltsdeliefernetzwerk (CDN) verwenden. 🎜> Cross-Browser-Kompatibilität bedeutet, dass Ihre Website korrekt funktioniert und in verschiedenen Webbrowsern konsistent aussieht. Es ist wichtig, weil Ihre Benutzer möglicherweise verschiedene Browser verwenden und eine Website, die in einem bestimmten Browser nicht korrekt funktioniert, zu einer schlechten Benutzererfahrung führen kann. Sie können die Kompatibilität für die Cross-Browser-Kompatibilität durch Nutzung von Standards-konformen Code und Testen Ihrer Website auf verschiedenen Browsern sicherstellen. und Tests. Stellen Sie sicher, dass Sie Ihre Website für Mobilgeräte und SEO optimieren, eine ordnungsgemäße Entwicklungsumgebung einrichten und die Kompatibilität des Cross-Browsers in Betracht ziehen. Testen Sie Ihre Website regelmäßig auf verschiedenen Geräten und Browsern und verwenden Sie Tools wie Google Lighthouse, um die Leistung Ihrer Website und die SEO zu überprüfen. Mit dem Versionskontrollsystem wie Git können Sie Änderungen an Ihrem Code verfolgen, wodurch die Zusammenarbeit mit anderen vereinfacht und bei Bedarf zu früheren Versionen Ihres Codes zurückgekehrt wird. Es ist ein wesentliches Tool für die moderne Webentwicklung. , die wiederverwendbare Codestücke sind. In der Webentwicklung ist es wichtig, dass es einfacher wird, Abhängigkeiten zu verwalten, und stellt sicher, dass Ihr Projekt über die richtigen Versionen der erforderlichen Pakete verfügt.

Ein Taskläufer wie Gulp oder Webpack automatisiert sich wiederholende Aufgaben wie Minifikation, Zusammenstellung, Einheitentests und Linie. Es ist wichtig in der Webentwicklung, da es Ihnen Zeit sparen und Ihnen helfen kann, eine konsistente Codebasis beizubehalten.

Das obige ist der detaillierte Inhalt von18 kritische Versehen in der Webentwicklung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn