日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

记一次对 Laravel-permission 项目的性能优化

發(fā)布時間:2025/4/5 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 记一次对 Laravel-permission 项目的性能优化 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

我最近研究分析了在?SWIS上面創(chuàng)建的項目的性能。令人驚訝的是,最耗費性能的方法之一是優(yōu)秀的 ?spatie/laravel-permission?包造成的。

經(jīng)過查閱更多資料和研究,發(fā)現(xiàn)一個可能明顯改善的性能問題?。既然解決方案已明確闡述,就很容易編寫代碼改善,提交請求。

現(xiàn)在這個解決方案已被合并和發(fā)布,下面是這個性能問題的分析和如何在自己的項目避免這類問題。

TL;DR:?跳轉(zhuǎn)到結(jié)論部分.

性能瓶頸

如果我們抽象的看?spatie/laravel-permission?它主要做兩件事:

  • 保持一個屬于某個模型的權(quán)限清單。
  • 檢查某個模型是否具有權(quán)限。
  • 第一點說是性能瓶頸有點牽強。這里的權(quán)限數(shù)據(jù)存放在數(shù)據(jù)庫中,需要的時候?qū)蛔x取出來。這個過程是有點慢但也只是執(zhí)行一次。結(jié)果會被緩存下來,后續(xù)的請求可以直接使用。

    第二點在性能瓶頸的觀點上來看確實是一個瓶頸。 這個瓶頸取決于權(quán)限的性質(zhì)和項目的大小, 因為權(quán)限會被頻繁的檢查。 在這個檢查的過程中任何的遲鈍都會成為整個項目的性能瓶頸。

    過濾集合類

    過濾權(quán)限集合的方法被認為是造成低性能的原因。 它做了如下事情:

    $permission = $permissions->where('id', $id)->where('guard_name', $guardName)->first();

    修改后:

    $permission = $permissions->filter(function ($permission) use ($id, $guardName) {return $permission->id === $id && $permission->guard_name === $guardName;})->first();

    這兩個代碼段實現(xiàn)了同一件事情,但第二個更快。

    性能測試

    我正在開發(fā)的應(yīng)用中大約有 150 個不同的權(quán)限。 在一個普通的請求中, 大約有 50 個權(quán)限需要用 ?hasPermissionTo?這個方法去檢查,當然,有些頁面可能需要檢查大約 200 個權(quán)限。

    以下是用來做性能測試的一些設(shè)置。

    $users = factory(User::class, 150)->make(); $searchForTheseUsers = $users->shuffle()->take(50);# 方法 1: where foreach($searchForTheseUsers as $user) {$result = $users->where('id', '=', $user->id)->first(); }# 方法 2: 過濾,傳遞一個模型作為回調(diào) foreach($searchForTheseUsers as $searchUser) {$result = $users->filter(function($user) use ($searchUser) {return $user->id === $searchUser->id;})->first(); }# 方法 3: 過濾,傳遞屬性作為回調(diào) foreach($searchForTheseUsers as $user) {$searchId = $user->id;$result = $users->filter(function($user) use ($searchId) {return $user->id === $searchId;})->first(); }

    以上三個方法都會被用來測試過濾 1 個屬性,2 個屬性,3 個屬性,所以,用方法 1 過濾三個屬性就會是這樣:

    foreach($searchForTheseUsers as $user) {$result = $users->where('id', '=', $user->id)->where('firstname', '=', $user->firstname)->where('lastname', '=', $user->lastname)->first(); }

    結(jié)果

    方法 #1方法 #2方法 #3
    1個屬性0.1900.139 (-27%)0.072 (-62%)
    2個屬性0.4990.372 (-25%)0.196 (-61%)
    3個屬性0.4880.603 (+25%)0.198 (-59%)

    結(jié)論

    我們可以得出結(jié)論:對一個項目而言,重復的過濾一個大集合會引發(fā)嚴重性能瓶頸。

    多屬性的過濾明顯增加計算成本。

    使用 Collection::filter() 代替?Collection::where() 可以提高60%的性能。

    警告:傳遞完整的模型給過濾器回調(diào)是很耗費性能的,最好是傳遞單獨的屬性。

    致謝

    感謝 Spatie 和 spatie/laravel-permissions?的貢獻者創(chuàng)建如此優(yōu)秀的包,我非常喜歡使用!感謝 Andru Beldie?指出這些性能問題,我才有機會對其進行調(diào)查和糾正。

    鏈接

    • spatie/laravel-permission package.
    • Issue #550 addressing performance problem.
    • Pull request #710 that fixes problems.

    更多現(xiàn)代化 PHP 知識,請前往 Laravel / PHP 知識社區(qū)

    轉(zhuǎn)載于:https://www.cnblogs.com/summerblue/p/9176947.html

    總結(jié)

    以上是生活随笔為你收集整理的记一次对 Laravel-permission 项目的性能优化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 国产a国产片国产 | wwwwww国产| 亚洲精品综合久久 | 成人免费黄色大片 | www.白丝| 肉色丝袜小早川怜子av | 久久夜精 | 狠狠久久婷婷 | 日本中文字幕影院 | 蜜臀久久精品久久久用户群体 | 麻豆传媒在线观看视频 | 国产精品第一页在线观看 | 国产真实交换夫妇视频 | 国产一区二区三区四区精 | 美女又爽又黄免费 | 青青草国产在线视频 | 午夜免费在线观看 | 五月天精品在线 | 日本欧美一区二区 | 日本人妻熟妇久久久久久 | 神宫寺奈绪一区二区三区 | 99久久婷婷国产综合精品青牛牛 | 亚洲欧洲免费 | 亚洲欧美日本在线 | www.色妞 | 40到50岁中老年妇女毛片 | 一级片成人 | 国产一级做a爰片在线看免费 | 中文字幕狠狠 | 五月婷婷综合网 | 中文字幕免 | 国产网站黄色 | 日韩一级在线视频 | 国产精品一线二线三线 | 激情四射婷婷 | 国产性―交一乱―色―情人 | 国产视频在线看 | 成人黄色一级片 | 啦啦啦视频在线观看 | 高清中文字幕在线a片 | 天天草天天草 | 精产国品一区二区三区 | 性色一区二区 | 久久视频热 | 精品91视频 | 国产成人无码精品久久久电影 | 中文字幕日韩在线播放 | 国产亚洲精品网站 | 欧美国产免费 | 国产视频欧美视频 | 夜夜爽影院| 毛片在线免费观看视频 | 九久久久久| 一级中国毛片 | 天天色天天色 | 久久久久久av无码免费网站下载 | 日本黄色高清 | 日本高清xxx| 久久日韩| 波多野结衣电影在线播放 | 久久黄色片 | 鲁一鲁啪一啪 | 国产精品jizz在线观看老狼 | 九一爱爱| 欧美福利电影 | 国产欧美一区二区在线 | 好爽快一点高潮了 | 亚州av免费 | 欧美午夜精品久久久久久孕妇 | 日韩熟女精品一区二区三区 | 性视频播放免费视频 | 大奶子网站 | 91香蕉视频官网 | 精品在线一区二区三区 | 污污视频在线免费观看 | 五月天激情视频在线观看 | 热热久 | 五级 黄 色 片 | 天天干天天色天天射 | 久青草免费视频 | 丝袜老师办公室里做好紧好爽 | 久久亚洲一区二区三区四区五区 | 国产在线999 | 97超碰成人 | 99国产精品免费视频 | 国产精品露脸视频 | 久久久男人天堂 | 国产精选视频在线观看 | 2019中文字幕在线 | 成人h在线 | 超碰麻豆 | 日韩成人无码 | 日韩人妻精品中文字幕 | 69视频一区| 人妻偷人精品一区二区三区 | 国产精品系列在线观看 | 国产福利91精品 | 欧美大片91 | 亚洲小视频在线观看 |