Laravel路由的优化建议

时间:2016-06-10 18:15:01

标签: php laravel laravel-5 laravel-5.1 laravel-routing

我正在创建一个在页面上列出产品的Laravel 5.1应用程序。现在,数据库中的每个产品都有产品详细信息页面的URL。我已经做了一个方法导出所有这些url并将它们转换为laravel路由,并将路由写入文件并包含在laravel路由中。我已经这样做了,以便能够使用laravel的 routes:cache 命令优化路由。现在我的问题实际上是关于优化,哪种方式会更好,有一个包含所有路由的文件,比方说100K路由或者有一个入口点,用于比较数据库中有问题的路径并返回相应的产品。 / p>

2 个答案:

答案 0 :(得分:4)

不需要为每种产品设置单独的路线。可能在数据库中存储一个独特的slug(语义URL)?然后有一条路线根据传递给路线的内容显示产品。

用户友好的slug可能类似于&t-shirt-9000'。如果您不想这样,您可以随时使用您在数据库中为产品设置的唯一ID。

在show方法中,您需要在数据库请求中使用slug查询数据库。

快速示例:

在routes.php中

Route::get('/products/{product}', 'ProductController@show');

产品控制器

public function show($product)
{
    $productRequested = Product::where('url_slug', $product)->first();
    // Do whatever from here
}

答案 1 :(得分:0)

您使用的框架将强制您优化代码

路由文件允许您以最快的方式最小化映射的URL数量。

Symfony提供给laravel的路线概念允许您使用一条路线操纵网址的所有变量,例如:

route::get('{category}/{id}/{slug}/{var1}/{var2}/{var3}/{varX}','yourController@yourMethod');

此路线会将网址中的所有变数发送至yourMethod();