apache .htaccess Regel mit dynamischen Seiten (PHP) Leistung

8

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?

    
Bianca 08.02.2012, 01:24
quelle

3 Antworten

7

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:

%Vor%

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).

    
rcs20 10.02.2012, 14:49
quelle
3

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%     
Gerben 08.02.2012 19:28
quelle
0

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:

%Vor%

(Btw, \d+ sollte auch für page verwendet werden, wenn es numerisch ist.)

    
Jakub Roztocil 08.02.2012 01:43
quelle

Tags und Links