کش کردن صفحات وب در php امروزه یک امر بسیار مهم است . زمانی که یک وبسایت با php توسعه داده می شود , معمولا کش کردن صفحات وب در نظر گرفته نمیشود.
کش کردن (cache) باعث افزایش سرعت پاسخ یک وبسایت می شود . در وب , یک نانو ثانیه باعث بهبود عملکرد بهتر یک صفحه وب می شود .اگر ترافیک وبسایت شما بستگی به موتورهای جستجو دارد , بنابراین کش کردن صفحات وب سایت شما بالاترین اولویت را برای شما خواهد داشت . گوگل سرعت لود سایت را یکی از جنبه های بسیار مهم یک وبسایت می داند .
برای تست سرعت لود وبسایت خود این مقاله را مطالعه بفرمایید
در مقاله قبل در مورد ساخت سیستم کش در php با استفاده از قابلیت بافر کردن output Buffer را دیدیم در اینجا به روش دیگری برای کش کردن صفحات وب در php می پردازیم
کش کردن صفحات وب در php
برای دسترسی به یک مکانیزم موثر کش کردن از دو پروسه زیر استفاده کنیم
- Htaccess برای بررسی اینکه اگر فایل کش وجود نداشت , صفحه php را فراخوانی کند
- فراخوانی فایل php برای کش کردن و ارسال پاسخ
مرحله اول : htaccess برای بررسی فایل کش
فولدر کش (cache) برخلاف بسیاری از سیستم های دیگر نباید جدا باشد . این مورد ضروری نیست . همانطور که در وردپرس دیدید , اگر پلاگین “WP Super Cache” را نصب کنید , یک فولدر جدا برای ذخیره فایل های کش ایجاد می کند .
نکته مهم : پیشنهاد می کنیم که فایل ها را بر اساس آدرس url آن ها بر روی حافظه دیسک ذخیره کنید , البته اگر بصورت مسقیم از url فراخوانی مشوند .
حالا فایل .htaccess ماژول RewriteRule می سازیم .که در اینجا تعریف می کنیم که اگر فایل فیزیکی در فولدر ذخیره وجود نداشت , در اینصورت فایل داینامیکphp فراخوانی شود.
1 2 3 |
# Checks if the file is physically NOT present RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([a-z0-9-]+)+/([a-z0-9-]+)\.html$ /controller.php?partA=$1&partB=$2 [L] |
رول rewrite بالا برای url هایی با پسوند .html نوشته شده است . اگر صفحات شما این پسوند را ندارند , بنابراین نیاز دارید که بخش پسوند را حذف کرده و آن مطابق برنامه عمل خواهد کد.
مرحله دوم : کش کردن صفحات وب در php
زمانی که فایل داینامیک php فراخوانی شد , تمام کاری که نیاز است انجام دهید کش کردن فایل در حافظه دیسک و ارسال پاسخ به کاربر بای نمایش صفحه مورد نظر است . بنابراین در بازدید اول , فایل htaccess صفحه php را فراخوانی می کند و فایل cache را می سازد . بعد از این مرحله , فایل صفحه وب php تا زمانی که فایل کش در دیسک ذخیره است , فراخوانی نخواهد شد .
یک فایل به نام cache.php ایجاد کنید و کد php زیر را داخل آن قرار دهید . پس از آن این فایل را در بالای صفحه داینامک وبی که قصد دارید محتویات آن کش شود فراخوانی (include) کنید .
فایل cache.php
1 2 3 4 5 6 7 8 9 10 11 |
function cache_page($content) { //path location where the cache file should be placed $fileName = $_SERVER['DOCUMENT_ROOT'].$_SERVER["REQUEST_URI"]; if(false !== ($f = @fopen($fileName, 'w'))) { fwrite($f, $content); fclose($f); } return $content.''; } // Start the output buffer for cache with callback on buffer-flush ob_start('cache_page'); |
حالا این فایل را در یک صفحه داینامیک وب فراخوانی میکنیم که در این مثال در بالای فایل article.php که برای نمایش مثلا زمان است فراخوانی می کنیم
فایل article.php
1 2 3 4 |
require_once("cache.php"); //here you have all the dynamic part of page //like for example, you may access a database <!-- @ <?php echo date("c"); ?> --> |
خب ببینیم که مکانیزم کش کردن صفحات وب در php که دربالا پیاده سازی کردیم به چه صورت است . ما از یک گزینه بازگشتی استفاده کردیم .و بعد از آن شروع به بافر کردن خروجی و ob_flush بر روی تابع بازگشتی صفحه کش شده کردیم (output buffering در php). بنابراین زمانی که محتوا آماده شد , این متد فراخوانی می شود و محتویات را در دیسک ذخیره می کند .
متوجه خط آخر هر دو فایل cache.php و articel.php شدید ؟ این خطوط برای بررسی اینکه فایل کش شده است استفاده شده اند . اگر کش شده باشد , راست کلیک کنید و در سورس می توانید زمان کش کردن صفحه را ببینید.
حذف کش و تعیین تاریخ انقضا در مقاله قبلی ساخت سیستم کش در php آموزش داده شد.
اگر از ابزار Google Webmaster و قسمت search Console استفاده می کنید . می توانید زمان پاسخ میانگین را مشاهده کنید . بعد از اعمال کردن مکانیزم کش کردن صفحات وب در php , 50% بهبود در زمان پاسخگویی میانگین (avg.response time) را در cms هایی که برای مشتریان طراحی شد , دریافت کردم .
جمع بندی
توجه داشته باشید که با بالارفتن بازدید وبسایت و افزایش بازدهی آن برای جذب مخاطب و دریافت ورودی بیشتر از موتور های جستجو مانند گوگل حتما و حتما از سیستم کش در سایت استفاده کنید . کش کردن صفحات در وب می تواند تا حد بسیار زیادی سرعت بارگذاری وبسایت و دفعات بعدی برای کاربرانی که برای بار های دوم و سوم و یا بیشتر به سایت سر می زنند , افزایش دهد . همچنین با کش کردن صفحات وب می توانید تا حدود بسیاری در پرداخت هزینه های بالا برای سرور های اختصاصی و منابع بیشتر سخت افزاری , صرفه جویی کنید.
برای دریافت فایل کامل کدهای کش کردن صفحات وب در php از باکس دانلود استفاده کنید
هر گونه مشکلی در پیاده سازی کدها داشتید ، از قسمت نظرات اقدام کنید . سریعا ، پاسخگوی سوالات شما هستیم .
موفق و پیروز باشید.
سلام خسته نباشید ببخشید چطور میتونم مثل این لینک کش کنم سایتمو
https://rozmusic.com/%d8%b9%d9%84%db%8c%d8%b1%d8%b6%d8%a7-%d9%be%d9%88%db%8c%d8%a7-%d8%b9%d9%84%d8%a7%d9%82%d9%87.html
به جز صفحه ی اصلی تمامی صفحات پسوند html دارند خیلی سرعت لودش عالی هست و از افزونه ی لایت اسپید کش هم استفاده میکنه چطور میتونم برای سایتم این عمل رو انجام بدم از وردپرس استفاده میکنم ممنون
سلام ممنون.
مطمین باشید تاثیر لود سایت فقط به خاطر کش کردن نیست و فاکتور های دیگه هم خیلی موثره.
شما این سایت و سایت خودتون رو با https://gtmetrix.com یکبار چک کنید و داخل همین سایت بصورت compare یا همان مقایسه ای بزنید (اول سایت rozmusic.com رو بزنید بررسی بشه بعد از دکمه سمت راست سایت خودتون رو اضافه و مقایسه کنید) ببینید چه فاکتورهایی رو این سایت داره که سایت شما نداره چون با یک افزونه ای که این سایت استفاده کردند یا از افزونه راکت می تونید برای کش کردن به بهترین نحو بهره ببرید.
سرعت سایت بر اساس dns یا سرور هم خیلی موثر هستش.
موفق باشید.
سرورشون توی ایرانه .
مثلا اینو ببین
https://www.ir/
این سایت رو ببینیدtechnobarg.com سرعت لودش از اونم بالاتره رتبه ۱۰۰ gtmetrix
من دارم از این ایده میگیرم