Laravel 資源還是客製化儲存庫?

PHPz
發布: 2024-08-21 16:37:32
原創
245 人瀏覽過

本週早些時候,在使用 Laravel Rest API 時,我遇到了超時錯誤的煩惱。它導致最終用戶對開發問題感到沮喪。讓我簡單介紹一下整個場景:

我需要從外部資料來源載入數據,過濾它,然後準備 json 回傳。資料量不大,單次請求只有10K左右。當我在檢索和過濾它們後嘗試格式化它們時,出現了主要問題。所以,我開始使用以下步驟來除錯:

  • 檢查查詢是否已最佳化以及資料列是否已建立索引。

  • 確保使用 chunk 方法

  • 檢查格式化倉庫沒有使用任何不必要的方法/引用/實作/未使用的函數/外部API呼叫。

所有檢查都已完成,但仍顯示網關逾時錯誤,因為它超過了 1 分鐘。服務類別如下圖所示:

Laravel Resource or Customized Repo?

repo 類別如下:

Laravel Resource or Customized Repo?

肉眼看來,10K+資料處理和操作不應該拋出逾時錯誤。我們將在最後討論為什麼會發生這種情況(可能不是實際的具體原因,但很可能),現在討論如何使用 Laravel Api 資源來解決它。


實作起來很簡單。首先,從命令列產生 Laravel Api 資源:

php artisan make:resource DataFormatterResource

登入後複製

然後,將您的模型物件傳送到資源並按照下面給出的要求格式化/操作您的資料:

Laravel Resource or Customized Repo?

Laravel Resource or Customized Repo?

令人驚訝的是,只花了3.7秒就回覆了? !
我試圖在這裡挖掘出真正的問題,並發現了一些可能的情況,上面提到了最後的定義。給出案例:

  1. Laravel API 資源提供了一個一致的介面來存取和操作數據,我使用儲存庫並在其中進行一些依賴項注入。這使得編寫高效程式碼並避免常見的效能瓶頸變得更加容易。
  2. Laravel API 資源針對效能進行了最佳化,因為它們使用快取和其他技術來提高資料檢索和處理的速度,而我只選擇數組原始格式的區塊。
  3. Laravel API 資源會根據請求標頭自動將資料庫查詢結果序列化為 JSON 或 XML。這為您省去了編寫自己的序列化程式碼的麻煩。

在我的專案的大多數服務中,我在服務層使用了儲存庫或功能格式化程序,但在這種情況下,我遇到了困難,因為可能有其他原因導致此問題發生。
我想強調的是,在使用模型時,Laravel Resources 在一些棘手的情況下可能會派上用場。

如果您喜歡這篇文章,請按讚或留言。 =「編碼愉快!…」 ?>

以上是Laravel 資源還是客製化儲存庫?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!