Ich erstelle eine Laravel 5.1-Anwendung, die Produkte auf Seiten auflistet. Jetzt hat jedes Produkt in der Datenbank die URL der Produktdetailseite. Ich habe eine Methode ausgeführt, die all diese URLs exportiert und sie in Laravel-Routen konvertiert, und die Routen werden in eine Datei geschrieben und in das Laravel-Routing einbezogen. Ich habe das auf diesem Weg gemacht, um in der Lage zu sein, das Routing zu optimieren, indem ich die Routen von laravel benutze: cache Befehl. Nun geht es in meiner Frage eigentlich um Optimierung, was wäre besser, eine Datei mit allen Routen zu haben, sagen wir 100K Routen oder einen einzigen Einstiegspunkt, der die betreffende Route innerhalb der Datenbank vergleicht und das jeweilige Produkt zurückgibt.Optimierungsvorschläge für Laravel-Routing
Antwort
Für jedes Produkt ist keine individuelle Route erforderlich. Möglicherweise Speichern Sie eine eindeutige Slug (Semantic URL) in der Datenbank? Dann haben Sie eine Route, die ein Produkt auf der Basis einer Route anzeigt.
benutzerfreundliche Slug könnte etwas wie "T-Shirt-9000" sein. Wenn Sie dies nicht möchten, können Sie immer die eindeutige ID verwenden, die Sie bereits für das Produkt in der Datenbank festgelegt haben.
Innerhalb Ihrer show-Methode müssten Sie die DB mit der Slug-Vergangenheit in der Anfrage an die Datenbank abfragen.
kurzes Beispiel:
In routes.php
Route::get('/products/{product}', '[email protected]');
Produkt-Controller
public function show($product)
{
$productRequested = Product::where('url_slug', $product)->first();
// Do whatever from here
}
Ja! Dies.Außer, Sie rufen den Parameter 'product' in Ihrer Route auf, aber' $ productRequested' im Controller. Vielleicht möchte ich das beheben. – Here2Help
Ja, ich habe vergessen, es muss gleich benannt werden. Fest! –
Es muss nicht gleich benannt werden, aber es ist wahrscheinlich gut, weniger verwirrend zu sein. – user3158900
die Tatsache, dass Sie verwenden, um einen Rahmen für die Sie Ihren Code
zu optimieren erzwungen werden Routendatei ermöglicht es Ihnen, den schnellsten Weg zu finden, die Anzahl der zugeordneten UR zu minimieren Ls.
der Begriff der Route von Symfony angeboten Laravel können Sie alle Variablen Ihrer URL mit einem einzigen Weg zu manipulieren, zum Beispiel:
route::get('{category}/{id}/{slug}/{var1}/{var2}/{var3}/{varX}','[email protected]');
diese Route alle Variablen in der URL zu yourMethod();
- 1. Optimierungsvorschläge für Javascript
- 2. Irgendwelche Optimierungsvorschläge für Core-Animation-Anwendungen?
- 3. Optimierung für Kartendaten
- 4. Stoppen meiner QuickInfos von flackern
- 5. Scala für() vs für {}
- 6. Verbindungszeichenfolge für Informix für .NET
- 7. Mindestanforderungen für Unity für Android?
- 8. Gruppe für Monat für Anwesenheitsliste
- 9. Modul für OneSignal für Appcelerator
- 10. Vorschlag für Vorlagenbuch für C++?
- 11. Alternative für BtsMSITask für BizTalk
- 12. Elmah für WCF für Ausnahmebehandlung
- 13. Beispiel für den Domain-Namen für mailgun be für nodejs?
- 14. Einstellung für Ländereinstellung für Java-Überschreibung für bestimmtes Gebietsschema
- 15. Implementieren von Bedingungsvariablen für CRITICAL_SECTIONs für WinThreads für XP
- 16. skalare Unterabfrage in if-Anweisung Bedingung in PL/SQL
- 17. Alternative für ‚in‘ Operator für verschachtelte Listen
- 18. Validierung für TextBox für ein Benutzerformular
- 19. Jeder Ersatz für Bugsense für ACRA
- 20. "für" Schleife in einem anderen "für" Schleife
- 21. Empfehlung für Bildschirm-Video-Capture für Demos
- 22. istream für die Kommandozeileneingabe für C++/Poco
- 23. Zeitbedingung für Überprüfer für GCM Zweck
- 24. Swift: Verschlüsselte Eingabe für UITextField für Kartendetails
- 25. Relativer Pfad für Asset-Funktion für Laravel
- 26. Chrome für iOS: „Immer erlauben“ für Plätzchen
- 27. Spline-Interpolation für Werte für die Zeit
- 28. Beispiel für Akka EventBus für Java
- 29. Syntax für reguläre Ausdrücke für "Nichts anpassen"?
- 30. Admob Unterstützung für Kivy (Python für Android)
Letzter. Erstelle keine gazillionen Routen. Vereinfachen Sie Ihre Routen, lassen Sie sie einen Parameter enthalten, den Sie dann für eine Datenbanksuche verwenden. Absolut. – Here2Help
@ Here2Help, ich bin mir nicht sicher, ob ich dem völlig zustimme. Das Hinzufügen eines DB-Lookups zu einer Anfrage verlängert die Anfragezeit und kann sogar der Performance schaden. Vielleicht hilft ein Haufen Caching der Situation ein wenig, aber ich denke, es ist eine schlechte Idee. – vsharper
@vsharper Eine DB-Suche ist genau das, was produktorientierte Websites _should_ tun sollten. Was, denkst du, sollte er seine routes-Datei jedes Mal aktualisieren, wenn ein neues Produkt hinzugefügt wird? Erstellen Sie einfach eine statische Website, vergessen Sie Laravel und PHP. – Here2Help