Bộ nhớ đệm là điều cần thiết để đạt được hiệu suất cao và khả năng mở rộng. Thực hiện chiến lược bộ nhớ đệm thích hợp ngay từ giai đoạn phát triển là rất quan trọng để tránh các API bị trễ và thời gian tải trang chậm. Laravel là một trong những khung công tác PHP phổ biến nhất, vì vậy việc triển khai chiến lược bộ nhớ đệm Laravel tối ưu là điều không thể thiếu để mang lại trải nghiệm người dùng tốt hơn và tác động kinh doanh lớn hơn.

Trong bài viết này, chúng ta sẽ khám phá các chiến lược để triển khai và thao tác bộ nhớ đệm trong Laravel. Bạn sẽ tìm hiểu về cách hoạt động của bộ nhớ đệm Laravel, một số truy vấn bộ nhớ đệm Laravel và cách bạn có thể xử lý bộ nhớ đệm trên các ứng dụng Laravel.

Bạn sẽ hiểu được nhiều điều hơn từ bài viết này nếu bạn đã nắm được bí quyết cơ bản về những điều sau:

  • Kiến thức tốt về phát triển web
  • Hiểu biết cơ bản về Laravel
  • Xây dựng API với Laravel
  • Hiểu biết cơ bản về bộ nhớ đệm

Hãy đi sâu vào!

Xem hướng dẫn bằng video của chúng tôi về Laravel Cache

Tại sao bộ nhớ đệm lại quan trọng?

Với sự bùng nổ gần đây của các doanh nghiệp internet, các công ty khác nhau đã thống kê cho thấy thời gian tải trang web và hiệu suất thấp có thể ảnh hưởng nặng nề như thế nào đến SEO, mức độ tương tác của người dùng và tỷ lệ hội thoại mà không cần lưu vào bộ nhớ đệm. Và điều đó bắt đầu với một chiến lược bộ nhớ đệm tuyệt vời được áp dụng.

Một nghiên cứu trực tuyến cho thấy, “1 giây thời gian trễ tải sẽ khiến Amazon mất 1,6 tỷ USD doanh thu mỗi năm”.

Một nghiên cứu khác của Google đã báo cáo, “Nghiên cứu của chúng tôi cho thấy rằng nếu kết quả tìm kiếm bị chậm lại dù chỉ một phần giây, thì mọi người sẽ tìm kiếm ít hơn (nghiêm trọng là: Độ trễ 400ms dẫn đến lượng tìm kiếm giảm 0,44% , người hâm mộ dữ liệu). Và sự thiếu kiên nhẫn này không chỉ giới hạn trong phạm vi tìm kiếm: 4/5 người dùng internet sẽ nhấp chuột bỏ đi nếu video dừng lại khi đang tải. “

Thời gian tải trang web của bạn chậm chạp một chút có thể dẫn đến tác động lớn đến trải nghiệm của người dùng và mất tiền nói chung.

Laravel Caching là gì?

Laravel cung cấp một triển khai mạnh mẽ và dễ sử dụng của bộ nhớ đệm và các phần phụ trợ bộ nhớ đệm khác nhau. Với bộ đệm Laravel, bạn có thể chuyển đổi hiệu quả giữa nhiều bộ đệm mà không cần viết bất kỳ mã nào.

Bạn có thể tìm thấy cấu hình của bộ đệm Laravel trong thư mục config/cache.php , mặc dù bạn có thể chỉ cần tệp .env để chuyển đổi giữa các phần phụ trợ bộ nhớ cache khác nhau.

Bộ nhớ đệm Laravel cũng cung cấp nhiều phương pháp thực tế mà chúng ta có thể sử dụng để thực hiện các chiến lược bộ nhớ đệm khác nhau.

So sánh và trình điều khiển bộ nhớ đệm Laravel

Bộ nhớ đệm Laravel cung cấp các chương trình phụ trợ và trình điều khiển bộ nhớ đệm tuyệt vời. Tùy thuộc vào trường hợp sử dụng của mình, bạn có thể chuyển đổi giữa chúng để nâng cao hiệu suất ứng dụng và thời gian tải.

Điều đó nói rằng, bộ đệm Laravel cũng cung cấp một cách liền mạch để tạo phần phụ trợ tùy chỉnh và sử dụng nó với bộ đệm Laravel, nhưng chỉ khi danh sách bên dưới không phù hợp với trường hợp sử dụng của bạn.

Chúng ta sẽ nói về danh sách tất cả các phụ trợ được cung cấp bởi bộ đệm Laravel tiếp theo.

1. Tệp

Trình điều khiển tệp là chương trình phụ trợ mặc định được bộ đệm Laravel sử dụng khi không có trình điều khiển nào được chỉ định trong tệp .env .

Phần phụ trợ tệp được thiết kế để lưu trữ dữ liệu đã lưu trong bộ nhớ cache trong một tệp được mã hóa được tìm thấy trong storage/framework/ . Laravel tạo một tệp được mã hóa với dữ liệu và khóa bộ đệm khi dữ liệu mới được lưu vào bộ đệm. Điều tương tự cũng xảy ra khi người dùng đang cố gắng truy xuất nội dung. Bộ nhớ đệm Laravel tìm kiếm khóa được chỉ định trong thư mục và nếu được tìm thấy, sẽ trả về nội dung.

Mặc dù tệp phụ trợ hoạt động hoàn hảo và tiết kiệm thời gian cài đặt và cấu hình trình điều khiển bên ngoài, nó cũng có thể hoàn hảo để phát triển. Nó nhanh hơn việc truy cập trực tiếp dữ liệu từ máy chủ cơ sở dữ liệu.

Để sử dụng trình điều khiển tệp , hãy thêm mã sau vào tệp .env của bạn:

CACHE_DRIVER=file

2. Mảng

Trình điều khiển mảng là một phần mềm phụ trợ bộ nhớ đệm hoàn hảo để chạy các bài kiểm tra tự động và được định cấu hình dễ dàng với Github Actions, Jenkins, v.v.

Mảng phụ trợ lưu trữ dữ liệu đã lưu trong bộ nhớ cache trong một mảng trong PHP và không yêu cầu bạn cài đặt hoặc định cấu hình bất kỳ trình điều khiển nào. Nó hoạt động hoàn hảo cho các bài kiểm tra tự động và nhanh hơn một chút so với phần phụ trợ bộ nhớ cache của tệp.

Để sử dụng trình điều khiển mảng , hãy thêm mã sau vào tệp .env của bạn:

CACHE_DRIVER=array

3. Cơ sở dữ liệu

Khi sử dụng trình điều khiển cơ sở dữ liệu , dữ liệu được lưu trữ trong bộ nhớ cho quy trình PHP hiện tại. Do đó, bạn cần tạo một bảng cơ sở dữ liệu để lưu trữ dữ liệu đã lưu trong bộ nhớ cache. Ngoài ra, bộ nhớ đệm cơ sở dữ liệu cải thiện khả năng mở rộng bằng cách phân phối khối lượng công việc truy vấn từ phần phụ trợ đến nhiều giao diện người dùng.

Bạn có thể chạy lệnh Artisan này – php artisan cache:table – để tự động tạo lược đồ cơ sở dữ liệu mà trình điều khiển cơ sở dữ liệu cần.

Trình điều khiển cơ sở dữ liệu được sử dụng chủ yếu trong các trường hợp bạn có thể cài đặt bất kỳ phần mềm nào trên nền tảng lưu trữ của mình.

Ví dụ: giả sử bạn đang sử dụng gói lưu trữ miễn phí với các tùy chọn hạn chế. Đối với điều đó, chúng tôi khuyên bạn nên gắn bó với trình điều khiển tệp vì trình điều khiển cơ sở dữ liệu , trong hầu hết các trường hợp, là điểm yếu nhất của ứng dụng của bạn và cố gắng đẩy thêm dữ liệu vào nút cổ chai đó không phải là một ý kiến hay.

Để sử dụng trình điều khiển cơ sở dữ liệu , hãy thêm mã sau vào tệp .env của bạn:

CACHE_DRIVER=database

4. Redis

Trình điều khiển redis sử dụng công nghệ lưu trữ dựa trên bộ nhớ trong bộ nhớ đệm được gọi là Redis . Mặc dù nó nhanh hơn so với các trình điều khiển bộ nhớ cache khác được thảo luận ở trên, nó yêu cầu cài đặt và định cấu hình công nghệ bên ngoài.

Để sử dụng trình điều khiển redis , hãy thêm mã sau vào tệp .env của bạn:

CACHE_DRIVER=redis

5. Ghi nhớ

Memcached được biết đến là kho lưu trữ bộ nhớ đệm dựa trên bộ nhớ trong phổ biến nhất. Nếu bạn không bận tâm về việc bảo trì thêm máy chủ (phải cài đặt và duy trì các dịch vụ bổ sung), thì các trình điều khiển bộ nhớ đệm dựa trên bộ nhớ Memcached là lựa chọn tuyệt vời.

Việc sử dụng trình điều khiển memcached yêu cầu cài đặt gói Memcached PECL.

Để sử dụng trình điều khiển memcached , hãy thêm mã sau vào tệp .env của bạn.

CACHE_DRIVER=memcached 

Trình điều khiển bộ nhớ đệm tốt nhất để sử dụng và hiệu suất của trình điều khiển bộ đệm phụ thuộc vào trường hợp sử dụng dự án của bạn và số lượng dữ liệu được truy xuất.

Phương pháp và cách sử dụng bộ nhớ đệm Laravel

Bộ nhớ đệm Laravel cung cấp nhiều phương pháp có giá trị được sử dụng để thực hiện nhiều chiến lược bộ nhớ đệm.

Dưới đây, chúng tôi sẽ liệt kê và giải thích các phương pháp khác nhau (được phân loại theo trường hợp sử dụng của chúng):

  1. put()
  2. get()
  3. many()
  4. putMany()
  5. increment()
  6. decrement()
  7. forever()
  8. forget()
  9. flush()
  10. remember()
  11. rememberForever()

Lưu trữ bộ nhớ đệm

Lưu trữ dữ liệu mới trong bộ nhớ cache rất đơn giản bằng cách sử dụng các phương pháp khác nhau, mỗi phương pháp có một số trường hợp sử dụng.

1. Cache :: put ()

Phương thức này chấp nhận ba tham số chính, thời lượngdữ liệu được lưu vào bộ nhớ đệm.

Hãy xem cách sử dụng Cache::put() :

Cache::put(key, data, duration) $post = Post::find(1); Cache::put('post_1', $post, 20);

Đoạn mã trên sẽ lưu vào bộ nhớ cache của bài đăng bằng khóa duy nhất trong 20 giây.

2. Cache :: putMany ()

Phương pháp này lưu trữ một mảng dữ liệu trong bộ nhớ cache cùng một lúc với cùng thời lượng. Nó chấp nhận hai tham số là dữ liệugiây .

Hãy xem cách sử dụng Cache::putMany() :

Cache::putMany(data, duration) // syntax $posts = Post::all(); Cache::putMany($posts, 20);
3. Bộ nhớ đệm :: nhớ ()

Phương pháp này là một cách tuyệt vời khác để triển khai chiến lược Cache Aside. Phương thức Cache::remember() chấp nhận ba tham số, một khóa , giây và bao đóng được sử dụng để truy xuất dữ liệu từ cơ sở dữ liệu nếu không được tìm thấy.

Hãy xem cách sử dụng Cache::remember() :

Cache::remember(key, duration, closure) // syntax Cache::remember('posts', 20, function(){ return Post::all(); });

Bộ nhớ đệm Laravel cũng có phương thức Cache::rememberForever() , không chấp nhận tham số seconds và lưu trữ dữ liệu mãi mãi.

4. Cache :: forever ()

Phương pháp này lưu trữ dữ liệu trong máy chủ bộ nhớ cache vĩnh viễn mà không chỉ định bất kỳ thời lượng nào. Bạn có thể triển khai nó bằng đoạn mã sau:

Cache::forever(key, data) $post = Post::find(1); Cache::forever('post_1', $post);

Truy xuất dữ liệu bộ nhớ đệm

Các phương thức trong danh mục này lấy dữ liệu từ bộ nhớ cache. Một số phương pháp này có thể hoạt động khác nhau tùy thuộc vào việc dữ liệu có được tìm thấy hay không.

1. Cache :: get ()

Phương pháp này lấy dữ liệu từ máy chủ bộ nhớ cache bằng một khóa cụ thể. Bạn có thể lấy một mặt hàng bằng cách sử dụng mã bên dưới:

Cache::get(key) // syntax $posts = Cache::get('posts');
2. Bộ nhớ đệm :: nhiều ()

Phương thức này tương tự như Cache::putMany() . Nó được sử dụng để truy xuất một mảng dữ liệu được lưu trong bộ nhớ cache cùng một lúc bằng cách sử dụng một mảng các khóa được lưu trong bộ nhớ cache. Bạn có thể truy xuất một mảng bộ nhớ cache bằng cách sử dụng mã sau:

Cache::many(keys) // syntax const $keys = [ 'posts', 'post_1', 'post_2' ]; $posts = Cache::many($keys);
3. Bộ nhớ đệm :: nhớ ()

Bạn cũng có thể sử dụng phương pháp này để truy xuất dữ liệu đã lưu trong bộ đệm bằng cách kiểm tra máy chủ bộ đệm bằng cách sử dụng khóa được cung cấp. Nếu dữ liệu được lưu trong bộ nhớ cache, nó sẽ truy xuất nó. Nếu không, nó sẽ lấy dữ liệu từ Máy chủ cơ sở dữ liệu và lưu vào bộ nhớ cache. Phương thức này giống như phương thức Cache::rememberForever() chỉ với một tham số giây phụ trong phương thức Cache::remember() .

Xóa các mục khỏi bộ nhớ cache

Các phương pháp trong danh mục này được sử dụng để xóa các mục khỏi bộ nhớ cache, được nhóm theo chức năng.

1. Bộ nhớ đệm :: quên ()

Phương pháp này xóa một mục khỏi bộ đệm với một tham số khóa được chỉ định:

Cache::forget('key');
2. Cache :: flush ()

Phương pháp này xóa tất cả các công cụ bộ nhớ cache. Nó xóa tất cả các mục được lưu trữ ở bất kỳ đâu trong bộ nhớ cache:

Cache::flush();

Tăng hoặc giảm giá trị bộ nhớ đệm

Bạn có thể điều chỉnh các giá trị của một giá trị số nguyên được lưu trữ trong bộ nhớ cache của mình bằng cách sử dụng các phương pháp tăng và giảm, tương ứng:

Cache::increment('key'); Cache::increment('key', $amount); Cache::decrement('key'); Cache::decrement('key', $amount);

Bộ nhớ đệm Laravel có nhiều phương pháp tuyệt vời mà chúng ta chưa thảo luận ở trên, nhưng các phương pháp trên là phổ biến. Bạn có thể xem tổng quan về tất cả các phương pháp trong tài liệu chính thức về bộ đệm Laravel.

Đăng kí để nhận thư mới

Giải thích các lệnh trong bộ nhớ cache

Laravel cung cấp các lệnh để làm việc với bộ đệm Laravel dễ dàng và nhanh chóng. Dưới đây là danh sách tất cả các lệnh và chức năng của chúng.

Xóa bộ nhớ đệm Laravel

Lệnh này được sử dụng để xóa bộ đệm Laravel trước khi nó hết hạn sử dụng terminal / console. Ví dụ: bạn có thể chạy lệnh sau:

php artisan cache:clear

Xóa bộ nhớ đệm tuyến đường

Lệnh này được sử dụng để xóa bộ đệm ẩn định tuyến của ứng dụng Laravel của bạn. Ví dụ: chạy lệnh sau để xóa bộ nhớ cache tuyến đường của bạn:

php artisan config:cache

Xóa tệp dạng xem đã biên dịch

Lệnh này được sử dụng để xóa các tệp dạng xem đã biên dịch của ứng dụng Laravel của bạn. Bạn có thể đạt được nó bằng lệnh sau:

php artisan view:clear

Bảng cơ sở dữ liệu

Khi sử dụng trình điều khiển cơ sở dữ liệu, bạn cần tạo một lược đồ cơ sở dữ liệu được gọi là bộ đệm để lưu trữ dữ liệu bộ đệm. Bạn cũng có thể sử dụng lệnh Artisan để tạo quá trình di chuyển với lược đồ thích hợp:

php artisan cache:table

Chiến lược bộ nhớ đệm Laravel

Tùy thuộc vào trường hợp sử dụng ứng dụng và cấu trúc dữ liệu, một số chiến lược bộ nhớ đệm khác nhau có thể khả dụng cho bạn. Bạn thậm chí có thể tạo một chiến lược tùy chỉnh để phù hợp với nhu cầu của mình. Dưới đây, chúng tôi sẽ giới thiệu cho các bạn danh sách các chiến lược bộ nhớ đệm phổ biến mà bạn có thể thực hiện trong dự án Laravel của mình.

writeThrough

Trong chiến lược writeThrough , máy chủ bộ đệm nằm giữa các yêu cầu và máy chủ cơ sở dữ liệu, làm cho mọi hoạt động ghi đều đi qua máy chủ bộ đệm trước khi đến Máy chủ cơ sở dữ liệu. Do đó, chiến lược ghi vào bộ nhớ đệm tương tự như chiến lược readThrough .

Bạn có thể thực hiện chiến lược này với bộ đệm Laravel với đoạn mã sau:

public function writeThrough($key, $data, $minutes) { $cacheData = Cache::put($key, $data, $minutes) // Database Server is called from(after) the Cache Server. $this->storeToDB($cachedData) return $cacheData } private function storeToDB($data){ Database::create($data) return true }

writeBack (writeBehind)

Chiến lược này là một cách nâng cao hơn để thực hiện chiến lược writeThrough bằng cách thêm độ trễ hoạt động ghi.

Bạn cũng có thể gọi đây là chiến lược writeBehind vì sự chậm trễ về thời gian được áp dụng cho máy chủ bộ đệm trước khi ghi dữ liệu vào máy chủ cơ sở dữ liệu.

Bạn có thể thực hiện chiến lược này với bộ đệm Laravel với đoạn mã sau:

$durationToFlush = 1; // (in minute) $tempDataToFlush = []; public function writeBack($key, $data, $minutes){ return $this->writeThrough($key, $data, $minutes); } public function writeThrough($key, $data, $minutes) { $cacheData = Cache::put($key, $data, $minutes); $this->storeForUpdates($cacheData); return $cacheData; } // Stores new data to temp Array for updating private function storeForUpdates($data){ $tempData = {}; $tempData['duration'] = this.getMinutesInMilli(); $tempData['data'] = data; array_push($tempDataToFlush, data); } // Converts minutes to millisecond private function getMinutesInMilli(){ $currentDate = now(); $futureDate = Carbon(Carbon::now()->timestamp + $this->durationToFlush * 60000) return $futureDate->timestamp } // Calls to update the Database Server. public function updateDatabaseServer(){ if($this->tempDataToFlush){ foreach($this->tempDataToFlush as $index => $obj){ if($obj->duration timestamp){ if(Database::create($obj->data)){ array_splice($this->tempDataToFlush, $index, 1); } } } } }

Phương thức writeBack gọi đến phương thức writeThrough , phương thức này lưu trữ dữ liệu vào máy chủ bộ đệm và một mảng tạm thời sẽ được đẩy sau này đến máy chủ cơ sở dữ liệu bằng phương thức updateDatabaseServer . Bạn có thể thiết lập CronJob để cập nhật máy chủ cơ sở dữ liệu năm phút một lần.

writeAround

Chiến lược này cho phép tất cả các hoạt động ghi đi trực tiếp đến máy chủ cơ sở dữ liệu mà không cần cập nhật máy chủ bộ đệm – chỉ trong các hoạt động đọc thì máy chủ bộ đệm mới được cập nhật.

Giả sử người dùng muốn tạo một Bài viết mới, Bài viết sẽ lưu trữ trực tiếp vào máy chủ cơ sở dữ liệu. Khi người dùng muốn đọc nội dung của Bài viết lần đầu tiên, Bài viết được truy xuất từ máy chủ cơ sở dữ liệu và cập nhật máy chủ bộ nhớ cache cho các yêu cầu tiếp theo.

Bạn có thể thực hiện chiến lược này với bộ đệm Laravel với đoạn mã sau:

Bạn cảm thấy mệt mỏi với việc hỗ trợ lưu trữ WordPress cấp độ 1 phụ mà không có câu trả lời? Hãy thử nhóm hỗ trợ đẳng cấp thế giới của chúng tôi! Kiểm tra các kế hoạch của chúng tôi

public function writeAround($data) { $storedData = Database::create($data); return $storedData; } public function readOperation($key, $minutes){ $cacheData = Cache::remember($key, $minutes, function() { return Article::all(); }) return $cacheData; }

Cache Aside (Tải chậm)

Cơ sở dữ liệu được đặt sang một bên trong chiến lược này và ứng dụng yêu cầu dữ liệu từ máy chủ bộ nhớ cache trước tiên. Sau đó, nếu có một lần truy cập (được tìm thấy), dữ liệu sẽ được trả lại cho khách hàng. Ngược lại, nếu có lỗi (không tìm thấy), máy chủ cơ sở dữ liệu sẽ yêu cầu dữ liệu và cập nhật máy chủ bộ đệm cho các yêu cầu tiếp theo.

Bạn có thể thực hiện chiến lược này với bộ đệm Laravel với đoạn mã sau:

public function lazyLoadingStrategy($key, $minutes, $callback) { if (Cache::has($key)) { $data = Cache::get($key); return $data; } else { // Database Server is called outside the Cache Server. $data = $callback(); Cache::set($key, $data, $minutes); return $data; } }

Đoạn mã trên cho thấy việc triển khai Chiến lược bên cạnh bộ đệm, tương đương với việc triển khai phương thức Cache :: nhớ .

Đọc qua

Chiến lược này đối lập trực tiếp với Chiến lược Aside trong bộ nhớ cache. Trong chiến lược này, Máy chủ bộ nhớ cache nằm giữa Yêu cầu Máy khách và Máy chủ Cơ sở dữ liệu.

Các yêu cầu đi trực tiếp đến máy chủ bộ đệm và máy chủ bộ đệm có trách nhiệm truy xuất dữ liệu từ máy chủ cơ sở dữ liệu nếu không được tìm thấy trong máy chủ bộ đệm.

Bạn có thể thực hiện chiến lược này với bộ đệm Laravel với đoạn mã sau:

public function readThrough($key, $minutes) { $data = Cache::find($key, $minutes); return $data; } private function find($key, $minutes){ if(Cache::has($key);){ return Cache::get($key); } // Database Server is called from the Cache Server. $DBdata = Database::find($key); Cache:put($key, $DBdata, $minutes); return $DBdata; }

Đây là bạn có nó! Bây giờ chúng ta đã thảo luận về một số chiến lược bộ nhớ đệm phổ biến cho ứng dụng Laravel tiếp theo của bạn. Hãy nhớ rằng, bạn thậm chí có thể sử dụng chiến lược bộ nhớ đệm tùy chỉnh phù hợp nhất với yêu cầu dự án của bạn.

Lưu vào bộ nhớ đệm Phần giao diện người dùng của Ứng dụng Laravel

Lưu vào bộ nhớ cache giao diện người dùng của Ứng dụng Laravel của chúng tôi là một khái niệm được gọi là FPC bộ nhớ cache toàn trang. Thuật ngữ này đề cập đến quá trình lưu vào bộ nhớ đệm phản hồi HTML từ một ứng dụng.

Nó tuyệt vời cho các ứng dụng mà dữ liệu HTML động không thay đổi thường xuyên. Bạn có thể lưu vào bộ nhớ cache phản hồi HTML để có phản hồi tổng thể và hiển thị HTML nhanh hơn.

Chúng ta có thể triển khai FPC với dòng mã sau:

class ArticlesController extends Controller { public function index() { if ( Cache::has('articles_index') ) { return Cache::get('articles_index'); } else { $news = News::all(); $cachedData = view('articles.index')->with('articles', $news)->render(); Cache::put('articles_index', $cachedData); return $cachedData; } } }

Thoạt nhìn, bạn có thể nhận thấy rằng chúng tôi kiểm tra xem trang article_index đã tồn tại trong máy chủ bộ nhớ cache của chúng tôi hay chưa. Sau đó, chúng tôi trả lại trang bằng cách kết xuất nó với các phương thức view ()render () của Laravel.

Nếu không, chúng tôi kết xuất trang và lưu trữ kết quả đầu ra trong máy chủ bộ nhớ cache của chúng tôi cho các yêu cầu tiếp theo trước khi trả lại trang được kết xuất cho trình duyệt.

Xây dựng ứng dụng Laravel

Bây giờ chúng ta sẽ áp dụng những gì chúng ta đã học được cho đến nay bằng cách tạo một dự án Laravel mới và triển khai bộ đệm Laravel.

Nếu bạn chưa sử dụng Laravel, bạn có thể đọc qua Laravel là gì và xem qua danh sách các hướng dẫn tuyệt vời về Laravel của chúng tôi để bắt đầu.

Thiết lập Laravel

Đầu tiên, chúng ta sẽ tạo một cá thể Laravel mới bằng cách sử dụng lệnh dưới đây. Bạn có thể tra cứu tài liệu chính thức để biết thêm.

Mở bảng điều khiển của bạn và điều hướng đến nơi bạn lưu trữ các dự án PHP của mình trước khi chạy các lệnh bên dưới. Đảm bảo đã cài đặt và định cấu hình Composer đúng cách.

composer create-project laravel/laravel fast-blog-app // Change directory to current Laravel installation cd fast-blog-app // Start Laravel development server. php artisan serve

Định cấu hình và lưu trữ cơ sở dữ liệu

Tiếp theo, chúng tôi sẽ thiết lập cơ sở dữ liệu của mình, tạo một mô hình Bài viết mới và gieo 500 điểm dữ liệu giả để thử nghiệm.

Mở ứng dụng khách cơ sở dữ liệu của bạn và tạo một cơ sở dữ liệu mới. Chúng tôi sẽ làm tương tự với tên fast_blog_app_db và sau đó điền vào tệp .env của chúng tôi bằng thông tin đăng nhập cơ sở dữ liệu:

DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=fast_blog_app_db DB_USERNAME=//DB USERNAME HERE DB_PASSWORD=//DB PASSWORD HERE

Tiếp theo, chúng ta sẽ chạy lệnh sau để tạo đồng thời quá trình di chuyển và mô hình Article :

php artisan make:model Article -m

Mở database/migrations/xxx-create-articles-xxx.php và dán vào đoạn mã sau:

<?php use IlluminateSupportFacadesSchema; use IlluminateDatabaseSchemaBlueprint; use IlluminateDatabaseMigrationsMigration; class CreateArticlesTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('articles', function (Blueprint $table) { $table->id(); $table->string('title'); $table->text('description'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('articles'); } }

Tiếp theo, chạy lệnh dưới đây để tạo một trình gieo hạt mới:

php artisan make:seeder ArticleSeeder

Mở tệp seeder mới được tạo trong database/seeders/ArticleSeeder.php và dán vào đoạn mã sau:

<?php namespace DatabaseSeeders; use AppModelsArticle; use IlluminateDatabaseSeeder; class ArticleSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { Article::factory()->count(500)->create(); } }

Mở tệp DatabaseSeeder.php trong cùng thư mục và thêm mã sau:

<?php namespace DatabaseSeeders; use IlluminateDatabaseSeeder; class DatabaseSeeder extends Seeder { /** * Seed the application's database. * * @return void */ public function run() { $this->call(ArticleSeeder::class); } }

Tiếp theo, chạy lệnh dưới đây để tạo một nhà máy mới:

php artisan make:factory ArticleFactory

Mở tệp nhà máy mới được xây dựng trong database/factories/ArticleFactory.php và dán vào mã sau:

<?php namespace DatabaseFactories; use AppModelsArticle; use IlluminateDatabaseEloquentFactoriesFactory; class ArticleFactory extends Factory { /** * The name of the factory's corresponding model. * * @var string */ protected $model = Article::class; /** * Define the model's default state. * * @return array */ public function definition() { return [ 'title' => $this->faker->text(), 'description' => $this->faker->paragraph(20) ]; } }

Bây giờ, hãy chạy lệnh bên dưới để di chuyển giản đồ mới được tạo của chúng tôi và cũng tạo ra dữ liệu giả của chúng tôi để thử nghiệm:

php artisan migrate --seed

Tạo bộ điều khiển bài viết

Tiếp theo, chúng tôi sẽ tạo bộ điều khiển của mình và thiết lập các tuyến đường của chúng tôi để xử lý yêu cầu của chúng tôi và truy xuất dữ liệu bằng cách sử dụng mô hình trên.

Chạy lệnh sau để tạo một ArticleController mới bên trong thư mục app/Http/Controllers :

php artisan make:controller ArticlesController --resource

Mở tệp và thêm mã sau vào lớp:

// Returns all 500 articles with Caching public function index() { return Cache::remember('articles', 60, function () { return Article::all(); }); } // Returns all 500 without Caching public function allWithoutCache() { return Article::all(); }

Sau đó, mở tệp api.php được tìm thấy bên trong thư mục routes/ và dán đoạn mã sau vào để tạo điểm cuối mà chúng ta có thể gọi để truy xuất dữ liệu của mình:

Route::get('/articles', '[email protected]'); Route::get('/articles/withoutcache', '[email protected]');

Kiểm tra hiệu suất

Cuối cùng, chúng tôi sẽ kiểm tra hiệu suất phản hồi của ứng dụng của chúng tôi có hoặc không có triển khai bộ đệm Laravel.

Ảnh chụp màn hình này hiển thị thời gian phản hồi của API với bộ nhớ cache được triển khai:

A screenshot of the Laravel API response time with cache implemented.
Thời gian phản hồi API Laravel với bộ nhớ cache.

Ảnh chụp màn hình sau đây cho thấy thời gian phản hồi của API mà không có bộ nhớ cache được triển khai – lưu ý rằng thời gian phản hồi đã tăng hơn 5.000% đối với phiên bản được lưu trong bộ nhớ cache:

A screenshot of the Laravel API response time without cache implemented.
Thời gian phản hồi API Laravel không có bộ nhớ cache.

Bản tóm tắt

Chúng tôi đã khám phá các chiến lược khác nhau để triển khai và thao tác bộ nhớ đệm Laravel bằng cách xây dựng một dự án mới, đánh giá các phản hồi của nó và so sánh kết quả.

Bạn cũng đã học cách sử dụng các trình điều khiển và phương pháp bộ nhớ đệm Laravel khác nhau. Ngoài ra, chúng tôi đã triển khai các chiến lược lưu vào bộ nhớ đệm khác nhau để giúp bạn tìm ra chiến lược nào có thể phù hợp với mình.

Để biết thêm về Laravel, hãy khám phá tuyển tập các hướng dẫn về laravel tốt nhất được chọn lọc kỹ lưỡng của chúng tôi. Cho dù bạn là người mới bắt đầu hay là một nhà phát triển Laravel nâng cao, có một cái gì đó cho tất cả mọi người trong đó!

Nếu bạn vẫn có câu hỏi về bộ nhớ đệm Laravel, vui lòng cho chúng tôi biết trong phần bình luận.


Tiết kiệm thời gian, chi phí và tối đa hóa hiệu suất trang web với:

  • Trợ giúp tức thì từ các chuyên gia lưu trữ WordPress, 24/7.
  • Tích hợp Cloudflare Enterprise.
  • Tiếp cận khán giả toàn cầu với 34 trung tâm dữ liệu trên toàn thế giới.
  • Tối ưu hóa với Giám sát Hiệu suất Ứng dụng được tích hợp sẵn của chúng tôi.

Tất cả những điều đó và hơn thế nữa, trong một kế hoạch không có hợp đồng dài hạn, hỗ trợ di chuyển và đảm bảo hoàn tiền trong 30 ngày. Kiểm tra các kế hoạch của chúng tôi hoặc nói chuyện với bộ phận bán hàng để tìm ra kế hoạch phù hợp với bạn.