التخزين المؤقت ضروري لتحقيق أداء عالٍ وقابلية التوسع. يعد تنفيذ إستراتيجية التخزين المؤقت المناسبة مباشرة من مرحلة التطوير أمرًا بالغ الأهمية لتجنب تأخر واجهات برمجة التطبيقات وأوقات تحميل الصفحة البطيئة . Laravel هو أحد أكثر أطر PHP شيوعًا ، لذا فإن تنفيذ إستراتيجية Laravel للتخزين المؤقت الأمثل لا غنى عنه لتجربة مستخدم أفضل وتأثير أكبر على الأعمال.
في هذه المقالة ، سنستكشف استراتيجيات تنفيذ ومعالجة التخزين المؤقت في Laravel. ستتعرف على كيفية عمل التخزين المؤقت في Laravel ، والعديد من استعلامات Laravel الخاصة بالتخزين المؤقت ، وكيف يمكنك التعامل مع التخزين المؤقت في تطبيقات Laravel.
ستحصل على المزيد من هذه المقالة إذا كان لديك بالفعل معرفة أساسية بما يلي تحت حزامك:
معرفة جيدة بتطوير الويب
الفهم الأساسي لـ Laravel
بناء واجهات برمجة التطبيقات مع Laravel
الفهم الأساسي للتخزين المؤقت
دعنا نتعمق!
لماذا يعتبر التخزين المؤقت مهمًا؟
مع الازدهار الأخير في الأعمال التجارية عبر الإنترنت ، تمتلك الشركات المختلفة إحصاءات توضح كيف يمكن أن يؤثر وقت تحميل موقع الويب والأداء المنخفض بشكل كبير على تحسين محركات البحث ومشاركة المستخدم ومعدلات المحادثة دون التخزين المؤقت. ويبدأ ذلك بإستراتيجية تخزين مؤقت ممتازة مطبقة.
و وجدت الدراسة عبر الإنترنت ، “سوف 1 ثانية من وقت تحميل تأخر تكلفة الأمازون 1.6 مليار $ في المبيعات سنويا.”
ذكرت دراسة أخرى في Google ، “يُظهر بحثنا أنه إذا تباطأت نتائج البحث حتى لجزء من الثانية ، فإن الأشخاص يبحثون بشكل أقل (بجدية: يؤدي التأخير الذي يصل إلى 400 مللي ثانية إلى انخفاض بنسبة 0.44 في المائة في حجم البحث ، ومحبي البيانات). ونفاد الصبر هذا لا يقتصر على البحث فقط: أربعة من كل خمسة مستخدمين للإنترنت سينقرون بعيدًا إذا توقف الفيديو أثناء التحميل “.
يمكن أن يؤدي البطء الطفيف في وقت تحميل صفحة الويب إلى إحداث تأثير هائل على تجربة المستخدمين وفقدان الأموال بشكل عام.
ما المقصود بالتخزين المؤقت في Laravel؟
يوفر Laravel تنفيذًا قويًا وسهل الاستخدام للتخزين المؤقت وخلفيات تخزين مؤقت مختلفة. باستخدام ذاكرة التخزين المؤقت Laravel ، يمكنك التبديل بكفاءة وفعالية بين العديد من محركات التخزين المؤقت دون كتابة أي تعليمات برمجية.
يمكنك العثور على تكوين ذاكرة التخزين المؤقت Laravel داخل config/cache.phpالمجلد ، على الرغم من أنك ستحتاج على الأرجح إلى ملف env فقط للتبديل بين الخلفيات الخلفية المختلفة لذاكرة التخزين المؤقت.
يوفر Laravel cache أيضًا العديد من الأساليب العملية التي يمكننا استخدامها لتنفيذ استراتيجيات التخزين المؤقت المختلفة.
مقارنات وبرامج تشغيل ذاكرة التخزين المؤقت في Laravel
توفر ذاكرة التخزين المؤقت في Laravel برامج خلفية ومحركات رائعة للتخزين المؤقت. بناءً على حالة الاستخدام الخاصة بك ، يمكنك التبديل بينها لتحسين أداء التطبيق ووقت التحميل.
ومع ذلك ، يوفر Laravel cache أيضًا طريقة سلسة لإنشاء خلفية خلفية مخصصة واستخدامها مع ذاكرة التخزين المؤقت Laravel ، ولكن فقط إذا كانت القائمة أدناه لا تناسب حالة الاستخدام الخاصة بك.
سنتحدث عن قائمة جميع الخلفيات التي يوفرها مخبأ Laravel بعد ذلك.
1. ملف
في ملف السائق هو الخلفية الافتراضية المستخدمة من قبل ذاكرة التخزين المؤقت لارافل عندما يتم تحديد أي سائق في .env الملف.
في ملف تم تصميم الواجهة الخلفية لتخزين البيانات المخزنة مؤقتا في ملف مشفر وجدت تحت storage/framework/. ينشئ Laravel ملفًا مشفرًا بالبيانات ومفتاح التخزين المؤقت عند تخزين البيانات الجديدة مؤقتًا. يحدث الشيء نفسه عندما يحاول المستخدم استرداد المحتوى. يبحث Laravel cache في المجلد عن المفتاح المحدد ويعيد المحتوى إذا وجد.
على الرغم من أن الواجهة الخلفية للملف تعمل بشكل لا تشوبه شائبة وتوفر الوقت في تثبيت برامج التشغيل الخارجية وتكوينها ، إلا أنها يمكن أن تكون أيضًا مثالية للتطوير . إنه أسرع من الوصول إلى البيانات من خادم قاعدة البيانات مباشرة.
لاستخدام برنامج تشغيل الملف ، أضف التعليمات البرمجية التالية إلى ملف .env الخاص بك :
CACHE_DRIVER=file
2. صفيف
و مجموعة السائق هو الخلفية التخزين المؤقت مثالية للتشغيل الآلي للاختبارات ويتم تكوين بسهولة مع تطبيقات جيثب، جنكينز، الخ
و مجموعة الخلفية مخازن البيانات المخزنة مؤقتا في صفيف في PHP و لا يتطلب منك تثبيت أو تكوين أية برامج تشغيل. إنه يعمل بشكل مثالي للاختبارات الآلية ، وهو أسرع قليلاً من الخلفية لذاكرة التخزين المؤقت للملف.
لاستخدام برنامج تشغيل المصفوفة ، أضف التعليمات البرمجية التالية إلى ملف .env الخاص بك :
CACHE_DRIVER=array
3. قاعدة البيانات
عند استخدام برنامج تشغيل قاعدة البيانات ، يتم تخزين البيانات في الذاكرة لعملية PHP الحالية. لذلك ، تحتاج إلى إنشاء جدول قاعدة بيانات لتخزين البيانات المخزنة مؤقتًا. بالإضافة إلى ذلك ، يعمل التخزين المؤقت لقاعدة البيانات على تحسين قابلية التوسع من خلال توزيع عبء عمل الاستعلام من الواجهة الخلفية إلى واجهات أمامية متعددة.
يمكنك تشغيل هذا الأمر الحرفي – php artisan cache:table- لإنشاء مخطط قاعدة البيانات الذي يحتاجه برنامج تشغيل قاعدة البيانات تلقائيًا.
في قاعدة بيانات يستخدم السائق بشكل رئيسي في الحالات حيث يمكنك تثبيت أي برنامج على منصة الاستضافة.
على سبيل المثال ، لنفترض أنك تستخدم خطة استضافة مجانية ذات خيارات محدودة. لذلك ، نقترح التمسك ببرنامج تشغيل الملفات لأن برنامج تشغيل قاعدة البيانات هو ، في معظم الحالات ، أضعف نقطة في تطبيقك ، ومحاولة دفع المزيد من البيانات إلى هذا الاختناق ليست فكرة جيدة.
لاستخدام برنامج تشغيل قاعدة البيانات ، أضف التعليمات البرمجية التالية إلى ملف .env الخاص بك :
CACHE_DRIVER=database
4. ريديس
و رديس يستخدم السائق تكنولوجيا التخزين المؤقت المستندة في الذاكرة يسمى رديس . على الرغم من أنها سريعة مقارنة ببرامج تشغيل ذاكرة التخزين المؤقت الأخرى التي تمت مناقشتها أعلاه ، إلا أنها تتطلب تثبيت وتكوين تقنية خارجية.
لاستخدام برنامج التشغيل redis ، أضف الكود التالي إلى ملف .env الخاص بك :
CACHE_DRIVER=redis
5. Memcached
يُعرف Memcached بأنه أكثر متاجر التخزين المؤقت القائمة على الذاكرة شيوعًا. إذا كنت لا تمانع في إجراء القليل من الصيانة الإضافية للخادم (الحاجة إلى تثبيت خدمات إضافية وصيانتها) ، فإن برامج تشغيل ذاكرة التخزين المؤقت المستندة إلى الذاكرة Memcached تعد خيارات رائعة.
يتطلب استخدام برنامج تشغيل memcached تثبيت حزمة Memcached PECL .
لاستخدام برنامج تشغيل memcached ، أضف التعليمات البرمجية التالية إلى ملف .env الخاص بك .
CACHE_DRIVER=memcached
يعتمد أفضل برنامج تشغيل للتخزين المؤقت لاستخدامه وأداء برنامج تشغيل ذاكرة التخزين المؤقت على حالة استخدام المشروع وكمية البيانات المراد استردادها.
استخدام وطرق Laravel Cache
يوفر Laravel cache العديد من الأساليب القيمة المستخدمة لتنفيذ العديد من استراتيجيات التخزين المؤقت.
أدناه سنقوم بإدراج وشرح الطرق المختلفة (مصنفة حسب حالة استخدامها):
put()
get()
many()
putMany()
increment()
decrement()
forever()
forget()
flush()
remember()
rememberForever()
تخزين ذاكرة التخزين المؤقت
يعد تخزين البيانات الجديدة في ذاكرة التخزين المؤقت أمرًا بسيطًا للغاية باستخدام طرق مختلفة ، ولكل منها حالات استخدام متعددة.
1. مخبأ :: وضع ()
تقبل هذه الطريقة ثلاث معلمات رئيسية ، والمدة ، والبيانات التي سيتم تخزينها مؤقتًا.
Cache::put(key, data, duration)
$post = Post::find(1);
Cache::put('post_1', $post, 20);
سيقوم الكود أعلاه بتخزين المنشور مؤقتًا باستخدام المفتاح الفريد لمدة 20 ثانية.
2. ذاكرة التخزين المؤقت :: putMany ()
تخزن هذه الطريقة مجموعة من البيانات في ذاكرة التخزين المؤقت مرة واحدة بنفس المدة. أنه يقبل معلمتين التي هي البيانات و ثواني .
دعنا نلقي نظرة على كيفية استخدام Cache::putMany():
Cache::putMany(data, duration) // syntax
$posts = Post::all();
Cache::putMany($posts, 20);
3. ذاكرة التخزين المؤقت :: تذكر ()
هذه الطريقة هي طريقة أخرى ممتازة لتنفيذ استراتيجية التخزين المؤقت. على Cache::remember()طريقة يقبل المعلمات الثلاث، وهي مفتاح ، ثواني ، و إغلاق استخدامه لاسترداد البيانات من قاعدة البيانات في حالة غير موجود.
دعنا نلقي نظرة على كيفية استخدام Cache::remember():
Cache::remember(key, duration, closure) // syntax
Cache::remember('posts', 20, function(){
return Post::all();
});
يحتوي Laravel cache أيضًا على التابع Cache::rememberForever()، الذي لا يقبل معامل الثواني ويخزن البيانات إلى الأبد.
4. Cache :: forever ()
تخزن هذه الطريقة البيانات في خادم ذاكرة التخزين المؤقت إلى الأبد دون تحديد أي مدة. يمكنك تنفيذه بالشفرة التالية:
Cache::forever(key, data)
$post = Post::find(1);
Cache::forever('post_1', $post);
استرجاع بيانات ذاكرة التخزين المؤقت
تسترد الأساليب في هذه الفئة البيانات من ذاكرة التخزين المؤقت. يمكن أن تتصرف بعض هذه الطرق بشكل مختلف اعتمادًا على ما إذا كانت البيانات موجودة أم لا.
1. مخبأ :: get ()
تسترد هذه الطريقة البيانات من خادم ذاكرة التخزين المؤقت باستخدام مفتاح محدد. يمكنك استرداد عنصر باستخدام الكود أدناه:
Cache::get(key) // syntax
$posts = Cache::get('posts');
2. مخبأ :: كثير ()
هذه الطريقة تشبه Cache::putMany(). يتم استخدامه لاسترداد مجموعة من البيانات المخزنة مؤقتًا مرة واحدة باستخدام مجموعة من المفاتيح المخزنة مؤقتًا. يمكنك استرداد مصفوفة من ذاكرة التخزين المؤقت باستخدام الكود التالي:
Cache::many(keys) // syntax
const $keys = [
'posts',
'post_1',
'post_2'
];
$posts = Cache::many($keys);
3. ذاكرة التخزين المؤقت :: تذكر ()
يمكنك أيضًا استخدام هذه الطريقة لاسترداد البيانات المخزنة مؤقتًا عن طريق التحقق من خادم ذاكرة التخزين المؤقت باستخدام المفتاح المقدم. إذا تم تخزين البيانات في ذاكرة التخزين المؤقت ، فسيتم استردادها. وإلا ، فسيتم استرداد البيانات من خادم قاعدة البيانات وتخزينها مؤقتًا. هذه الطريقة هي نفس Cache::rememberForever()الطريقة مع معامل ثواني إضافي في Cache::remember()الطريقة.
إزالة العناصر من ذاكرة التخزين المؤقت
تُستخدم الطرق ضمن هذه الفئة لإزالة العناصر من ذاكرة التخزين المؤقت ، مجمعة حسب الوظيفة.
1. Cache :: forget ()
تزيل هذه الطريقة عنصرًا واحدًا من ذاكرة التخزين المؤقت بمعامل مفتاح محدد:
Cache::forget('key');
2. مخبأ :: دافق ()
تقوم هذه الطريقة بمسح جميع محركات ذاكرة التخزين المؤقت. يقوم بحذف جميع العناصر المخزنة في أي مكان في ذاكرة التخزين المؤقت:
Cache::flush();
زيادة قيم ذاكرة التخزين المؤقت أو إنقاصها
يمكنك ضبط قيم قيمة عدد صحيح مخزنة في ذاكرة التخزين المؤقت الخاصة بك باستخدام طرق الزيادة والتناقص ، على التوالي:
Cache::increment('key');
Cache::increment('key', $amount);
Cache::decrement('key');
Cache::decrement('key', $amount);
يحتوي Laravel cache على العديد من الطرق الرائعة التي لم نناقشها أعلاه ، لكن الطرق المذكورة أعلاه شائعة. يمكنك الحصول على نظرة عامة على جميع التوابع في توثيق Laravel المؤقت الرسمي .
وأوضح أوامر ذاكرة التخزين المؤقت
يوفر Laravel أوامر لجعل العمل مع Laravel cache سهلًا وسريعًا. يوجد أدناه قائمة بجميع الأوامر ووظائفها.
امسح ذاكرة التخزين المؤقت Laravel
يُستخدم هذا الأمر لمسح ذاكرة Laravel المخبئية قبل انتهاء صلاحيتها باستخدام Terminal / console. على سبيل المثال ، يمكنك تشغيل الأمر التالي:
php artisan cache:clear
مسح الطريق- ذاكرة التخزين المؤقت
يُستخدم هذا الأمر لمسح ذاكرة التخزين المؤقت لمسار تطبيق Laravel الخاص بك. على سبيل المثال ، قم بتشغيل الأمر التالي لمسح ذاكرة التخزين المؤقت لمسارك:
php artisan config:cache
مسح ملفات العرض المجمعة
يستخدم هذا الأمر لمسح ملفات العرض المترجمة لتطبيق Laravel الخاص بك. يمكنك تحقيق ذلك بالأمر التالي:
php artisan view:clear
جدول قاعدة البيانات
عند استخدام برنامج تشغيل قاعدة البيانات ، تحتاج إلى إنشاء مخطط قاعدة بيانات يسمى ذاكرة التخزين المؤقت لتخزين بيانات ذاكرة التخزين المؤقت. يمكنك أيضًا استخدام الأمر Artisan لإنشاء ترحيل باستخدام المخطط المناسب:
php artisan cache:table
استراتيجيات التخزين المؤقت في Laravel
اعتمادًا على حالة استخدام التطبيق وهيكل البيانات ، من المحتمل أن تتوفر لك العديد من استراتيجيات التخزين المؤقت المختلفة. يمكنك حتى إنشاء استراتيجية مخصصة لتناسب احتياجاتك. سنستعرض أدناه قائمة استراتيجيات التخزين المؤقت الشائعة التي يمكنك تنفيذها في مشروع Laravel الخاص بك.
معلومات
يسمح لك Kinsta بتشغيل Laravel لمنتجاتك ، على الرغم من عدم دعمه رسميًا من قبل فريقنا.
الكتابة من خلال
في استراتيجية writeThrough ، يجلس خادم ذاكرة التخزين المؤقت بين الطلبات وخادم قاعدة البيانات ، مما يجعل كل عملية كتابة تمر عبر خادم ذاكرة التخزين المؤقت قبل الانتقال إلى خادم قاعدة البيانات. وبالتالي ، فإن إستراتيجية writeThrough caching تشبه إستراتيجية readThrough .
يمكنك تنفيذ هذه الاستراتيجية باستخدام ذاكرة التخزين المؤقت Laravel بالشفرة التالية:
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) (الكتابة للخلف)
هذه الإستراتيجية هي طريقة أكثر تقدمًا لتنفيذ إستراتيجية writeThrough عن طريق إضافة عمليات تأخير في عمليات الكتابة.
يمكنك أيضًا استدعاء هذه الاستراتيجية writeBehind بسبب التأخير في الوقت المطبق على خادم ذاكرة التخزين المؤقت قبل كتابة البيانات إلى خادم قاعدة البيانات.
يمكنك تنفيذ هذه الاستراتيجية باستخدام ذاكرة التخزين المؤقت Laravel بالشفرة التالية:
$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);
}
}
}
}
}
و writeBack استدعاءات الأسلوب إلى writeThrough الطريقة التي يخزن البيانات إلى الخادم ذاكرة التخزين المؤقت ومجموعة مؤقتة ليتم دفعها في وقت لاحق إلى خادم قاعدة البيانات باستخدام updateDatabaseServer الأسلوب. يمكنك إعداد CronJob لتحديث خادم قاعدة البيانات كل خمس دقائق.
الكتابة
تسمح هذه الإستراتيجية لجميع عمليات الكتابة بالانتقال مباشرة إلى خادم قاعدة البيانات دون تحديث خادم ذاكرة التخزين المؤقت – فقط أثناء عمليات القراءة يتم تحديث خادم ذاكرة التخزين المؤقت.
بافتراض أن المستخدم يريد إنشاء مقال جديد ، فإن المقال يخزن مباشرة في خادم قاعدة البيانات. عندما يريد المستخدم قراءة محتوى المقالة لأول مرة ، يتم استرداد المقالة من خادم قاعدة البيانات وتحديث خادم ذاكرة التخزين المؤقت للطلبات اللاحقة.
يمكنك تنفيذ هذه الاستراتيجية باستخدام ذاكرة التخزين المؤقت Laravel بالشفرة التالية:
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;
}
ذاكرة التخزين المؤقت جانبا (تحميل كسول)
توجد قاعدة البيانات جانباً في هذه الإستراتيجية ، ويطلب التطبيق البيانات من خادم ذاكرة التخزين المؤقت أولاً. وبعد ذلك ، إذا كانت هناك نتيجة (تم العثور عليها) ، يتم إرجاع البيانات إلى العميل. خلاف ذلك ، إذا كان هناك خطأ (غير موجود) ، يطلب خادم قاعدة البيانات البيانات ويحدّث خادم ذاكرة التخزين المؤقت للطلبات اللاحقة.
هل سئمت من دعم استضافة وورد بريس من المستوى 1 دون الإجابات؟ جرب فريق الدعم العالمي! تحقق من خططنا
يمكنك تنفيذ هذه الاستراتيجية باستخدام ذاكرة التخزين المؤقت Laravel بالشفرة التالية:
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;
}
}
يُظهر الكود أعلاه تنفيذ إستراتيجية التخزين المؤقت ، والتي تعادل تنفيذ طريقة Cache :: Remember .
من خلال قراءة
هذه الإستراتيجية هي عكس إستراتيجية التخزين المؤقت جانبًا. في هذه الإستراتيجية ، يجلس خادم ذاكرة التخزين المؤقت بين طلب العميل وخادم قاعدة البيانات.
تذهب الطلبات مباشرة إلى خادم ذاكرة التخزين المؤقت ، ويكون خادم ذاكرة التخزين المؤقت مسؤولاً عن استرداد البيانات من خادم قاعدة البيانات إذا لم يتم العثور عليها في خادم ذاكرة التخزين المؤقت.
يمكنك تنفيذ هذه الاستراتيجية باستخدام ذاكرة التخزين المؤقت Laravel بالشفرة التالية:
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;
}
ها أنت ذا! لقد ناقشنا الآن بعض استراتيجيات التخزين المؤقت الشائعة لتطبيق Laravel التالي. تذكر أنه يمكنك حتى استخدام إستراتيجية تخزين مؤقت مخصصة تناسب متطلبات مشروعك على أفضل وجه.
التخزين المؤقت لجزء واجهة المستخدم من تطبيق Laravel
التخزين المؤقت لواجهة المستخدم لتطبيق Laravel هو مفهوم يُعرف باسم FPC لذاكرة التخزين المؤقت للصفحة الكاملة. يشير المصطلح إلى عملية التخزين المؤقت لاستجابة HTML من أحد التطبيقات.
إنه ممتاز للتطبيقات التي لا تتغير فيها بيانات HTML الديناميكية بشكل متكرر. يمكنك تخزين استجابة HTML مؤقتًا للحصول على استجابة عامة أسرع وعرض HTML.
يمكننا تنفيذ FPC بالسطر التالي من التعليمات البرمجية:
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;
}
}
}
للوهلة الأولى، قد لاحظت أن نتحقق إذا كان هذا articles_index الصفحة موجود بالفعل في خادم مخبأ لدينا. ثم نعود الصفحة عن طريق جعلها مع لارافل في عرض () و تقديم) ( الأساليب.
بخلاف ذلك ، نقوم بعرض الصفحة وتخزين المخرجات في خادم ذاكرة التخزين المؤقت للطلبات اللاحقة قبل إعادة الصفحة المعروضة إلى المتصفح.
أنشئ تطبيق Laravel
سنقوم الآن بتطبيق ما تعلمناه حتى الآن من خلال إنشاء مشروع Laravel جديد وتنفيذ Laravel cache.
إذا لم تكن قد استخدمت Laravel ، فيمكنك قراءة ماهية Laravel وإلقاء نظرة خاطفة على قائمة دروس Laravel الممتازة للبدء.
إعداد Laravel
أولاً ، سننشئ مثيل Laravel جديدًا باستخدام الأمر أدناه. يمكنك البحث عن الوثائق الرسمية للمزيد.
افتح وحدة التحكم الخاصة بك وانتقل إلى المكان الذي تخزن فيه مشاريع PHP قبل تشغيل الأوامر أدناه. تأكد من تثبيت Composer وتكوينه بشكل صحيح.
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
تكوين وبذر قاعدة البيانات
بعد ذلك، سوف نقوم بإنشاء قاعدة البيانات الخاصة بنا، وخلق جديد المادة النموذج، والبذور 500 نقطة بيانات وهمية للاختبار.
افتح عميل قاعدة البيانات وأنشئ قاعدة بيانات جديدة. سنفعل الشيء نفسه بالاسم fast_blog_app_db ثم نملأ ملف .env الخاص بنا ببيانات اعتماد قاعدة البيانات:
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
بعد ذلك ، سنقوم بتشغيل الأمر التالي لإنشاء الترحيل ونموذج المقالة في وقت واحد:
php artisan make:model Article -m
افتح الترحيل الذي تم العثور عليه حديثًا database/migrations/xxx-create-articles-xxx.phpوالصقه في الكود التالي:
<strong><?php</strong>
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
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');
}
}
بعد ذلك ، قم بتشغيل الأمر أدناه لإنشاء بذر جديد:
php artisan make:seeder ArticleSeeder
افتح ملف المصدر الذي تم إنشاؤه حديثًا والذي تم العثور عليه database/seeders/ArticleSeeder.phpوالصقه في الكود التالي:
<?php
namespace Database\Seeders;
use App\Models\Article;
use Illuminate\Database\Seeder;
class ArticleSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
Article::factory()->count(500)->create();
}
}
افتح ملف DatabaseSeeder.php في نفس الدليل وأضف الكود التالي:
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
$this->call(ArticleSeeder::class);
}
}
بعد ذلك ، قم بتشغيل الأمر أدناه لإنشاء مصنع جديد:
php artisan make:factory ArticleFactory
افتح ملف المصنع الجديد الذي تم العثور عليه database/factories/ArticleFactory.phpوالصقه في الكود التالي:
<strong><?php</strong>
namespace Database\Factories;
use App\Models\Article;
use Illuminate\Database\Eloquent\Factories\Factory;
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)
];
}
}
الآن ، قم بتشغيل الأمر أدناه لترحيل مخططنا الذي تم إنشاؤه حديثًا وكذلك زرع بياناتنا المزيفة للاختبار:
php artisan migrate --seed
إنشاء وحدة تحكم المادة
بعد ذلك ، سننشئ وحدة التحكم الخاصة بنا وننشئ مساراتنا للتعامل مع طلبنا واسترداد البيانات باستخدام النموذج أعلاه.
قم بتشغيل الأمر التالي لإنشاء ArticlesController جديد داخل app/Http/Controllersالمجلد:
php artisan make:controller ArticlesController –resource
افتح الملف وأضف الكود التالي إلى الفصل:
// 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();
}
بعد ذلك ، افتح ملف api.php الموجود داخل routes/المجلد والصق الكود التالي لإنشاء نقطة نهاية يمكننا الاتصال بها لاسترداد بياناتنا:
Route::get('/articles', 'ArticlesController@index');
Route::get('/articles/withoutcache', 'ArticlesController@allWithoutcache');
اختبار الأداء
أخيرًا ، سنختبر أداء استجابة تطبيقنا مع أو بدون تنفيذ ذاكرة التخزين المؤقت Laravel.
تُظهر لقطة الشاشة هذه وقت استجابة واجهة برمجة التطبيقات مع تنفيذ ذاكرة التخزين المؤقت:
تُظهر لقطة الشاشة التالية وقت استجابة واجهة برمجة التطبيقات بدون تنفيذ ذاكرة التخزين المؤقت – لاحظ أن وقت الاستجابة قد زاد عن مثيل التخزين المؤقت بأكثر من 5000٪ :
ملخص
لقد اكتشفنا استراتيجيات مختلفة لتنفيذ التخزين المؤقت في Laravel ومعالجته من خلال بناء مشروع جديد وقياس استجاباته ومقارنة النتائج.
لقد تعلمت أيضًا كيفية استخدام محركات وطرق التخزين المؤقت المختلفة في Laravel. بالإضافة إلى ذلك ، قمنا بتنفيذ استراتيجيات مختلفة للتخزين المؤقت لمساعدتك في معرفة أيها قد يكون مناسبًا لك.