Ich habe eine neue Website (ich baue gerade eine) und ich möchte sicherstellen, dass ich es richtig mache und nicht nach einem Monat neu entwerfe.
Ich habe Seiten wie:
%Vor%Also schaue ich auf stackoverflow darüber, wie ich das machen kann und ich fand:
%Vor%Nun, das wird funktionieren, aber meine Frage betrifft die Ausführung. Offensichtlich ist die $ _GET [Kategorie] der Name und die Seite wird zum Beispiel Schokolade sein.
jetzt, wenn ich meine Abfrage mache, werde ich tun:
%Vor%wäre es jetzt besser, wenn ich den Primärschlüssel verwende, der ein INT ist. Wenn ja, was kann ich in meinem .htaccess tun, um dies zu tun?
Wenn Sie einen Namen verwenden und ihn in eine eindeutige ID konvertieren, kann die Ausführung länger dauern als das Erstellen eines Indexes für den Namen selbst.
Folgendes empfehle ich anhand der URLs, die Sie haben:
Fügt dem Namen der Seite einen Index hinzu
%Vor%Beispiel:
%Vor% Nun, da die Struktur anders ist /candy
vs /candy/chocolate
, nehme ich an, Sie haben eine Art Struktur wie eine Hauptseite mit der Liste (/ candy) und der spezifischen Liste (/ candychocolate), also können Sie in diesem Fall benutze das:
Dann können Sie einfach die Kategorie und die Seite über das indizierte Feld abfragen. Dies wird schnell (natürlich nicht so schnell wie ein INT, aber immer noch schnell).
Für die erste Abfrage können Sie Folgendes tun:
%Vor%und wenn Sie eine Seite erhalten, können Sie verwenden:
%Vor%Auf diese Weise vermeiden Sie, indem Sie sowohl Kategorie als auch Seite verwenden, die Seite nicht gefunden (404).
Stellen Sie nur sicher, dass Ihre Datenbank einen Index für die Namenszeile enthält. Dadurch wird die Suche genauso schnell wie mit einem ganzzahligen Primärschlüssel.
Benutze etwas wie CREATE INDEX name ON mytable
Ich denke, aber es ist einfacher, es über phpmyadmin zu tun.
Schützen Sie das Skript auch vor sql-injection, indem Sie addslashes verwenden
%Vor% Der in der URL verwendete Bezeichner sollte eindeutig sein und einen Datenbankindex haben. Wenn sowohl der ID- als auch der Kategoriename eindeutig und indiziert sind, ist die Leistung identisch, aber ich würde empfehlen, den Namen zu verwenden, da er suchmaschinenfreundlicher und aussagekräftiger ist als eine interne ID, was besonders wichtig ist, wenn eine URL verwendet wird irgendwo ohne viel zusätzlichen Kontext angezeigt (z. B. example.org/1
vs example.org/shoes
in einer Zeitung gedruckt). Wenn nicht, dann benutze ID und ändere die Rewrite-Regel zu:
(Btw, \d+
sollte auch für page
verwendet werden, wenn es numerisch ist.)
Tags und Links php mysql performance .htaccess