کش کردن صفحات وب در php

  • آپدیت شده در تاریخ

کش کردن صفحات وب در php

کش کردن صفحات وب در php امروزه یک امر بسیار مهم است . زمانی که یک وبسایت با php توسعه داده می شود , معمولا کش کردن صفحات وب در نظر گرفته نمیشود.

کش کردن (cache) باعث افزایش سرعت پاسخ یک وبسایت می شود . در وب , یک نانو ثانیه باعث بهبود عملکرد بهتر یک صفحه وب می شود .اگر ترافیک وبسایت شما بستگی به موتورهای جستجو دارد , بنابراین کش کردن صفحات وب سایت شما بالاترین اولویت را برای شما خواهد داشت . گوگل سرعت لود سایت را یکی از جنبه های بسیار مهم یک وبسایت می داند .

برای تست سرعت لود وبسایت خود این مقاله را مطالعه بفرمایید

در مقاله قبل در مورد ساخت سیستم کش در php با استفاده از قابلیت بافر کردن output Buffer را دیدیم در اینجا به روش دیگری برای کش کردن صفحات وب در php می پردازیم

کش کردن صفحات وب در php

کش کردن صفحات وب در php

برای دسترسی به یک مکانیزم موثر کش کردن از دو پروسه زیر استفاده کنیم

  • Htaccess برای بررسی اینکه اگر فایل کش وجود نداشت , صفحه php را فراخوانی کند
  • فراخوانی فایل php برای کش کردن و ارسال پاسخ

 

مرحله اول : htaccess برای بررسی فایل کش

فولدر کش (cache) برخلاف بسیاری از سیستم های دیگر نباید جدا باشد . این مورد ضروری نیست . همانطور که در وردپرس دیدید , اگر پلاگین “WP Super Cache” را نصب کنید , یک فولدر جدا برای ذخیره فایل های کش ایجاد می کند .

نکته مهم : پیشنهاد می کنیم که فایل ها را بر اساس آدرس url آن ها بر روی حافظه دیسک ذخیره کنید , البته اگر بصورت مسقیم از url فراخوانی مشوند .

حالا فایل .htaccess ماژول RewriteRule می سازیم .که در اینجا تعریف می کنیم که اگر فایل فیزیکی در فولدر ذخیره وجود نداشت , در اینصورت فایل داینامیکphp فراخوانی شود.

رول rewrite بالا برای url هایی با پسوند .html نوشته شده است . اگر صفحات شما این پسوند را ندارند , بنابراین نیاز دارید که بخش پسوند را حذف کرده و آن مطابق برنامه عمل خواهد کد.

مرحله دوم : کش کردن صفحات وب در php

زمانی که فایل داینامیک php فراخوانی شد , تمام کاری که نیاز است انجام دهید کش کردن فایل در حافظه دیسک و ارسال پاسخ به کاربر بای نمایش صفحه مورد نظر است . بنابراین در بازدید اول , فایل htaccess صفحه php را فراخوانی می کند و فایل cache را می سازد . بعد از این مرحله  , فایل صفحه وب php تا زمانی که فایل کش در دیسک ذخیره است , فراخوانی نخواهد شد .

یک فایل به نام cache.php ایجاد کنید و کد php زیر را داخل آن قرار دهید . پس از آن این فایل را در بالای صفحه داینامک وبی که قصد دارید محتویات آن کش شود فراخوانی (include) کنید .

فایل cache.php

حالا این فایل را در یک صفحه داینامیک وب فراخوانی میکنیم که در این مثال در بالای فایل article.php که برای نمایش مثلا زمان است فراخوانی می کنیم

فایل article.php

خب ببینیم که مکانیزم کش کردن صفحات وب در php که دربالا پیاده سازی کردیم به چه صورت است . ما از یک گزینه بازگشتی استفاده کردیم .و بعد از آن شروع به بافر کردن خروجی و ob_flush بر روی تابع بازگشتی صفحه کش شده کردیم (output buffering در php). بنابراین زمانی که محتوا آماده شد , این متد فراخوانی می شود و محتویات را در دیسک ذخیره می کند .

متوجه خط آخر هر دو فایل cache.php و articel.php شدید ؟ این خطوط برای بررسی اینکه فایل کش شده است استفاده شده اند . اگر کش شده باشد , راست کلیک کنید و در سورس می توانید زمان کش کردن صفحه را ببینید.

حذف کش و تعیین تاریخ انقضا در مقاله قبلی ساخت سیستم کش در php آموزش داده شد.

اگر از ابزار Google Webmaster  و قسمت search Console استفاده می کنید .  می توانید زمان پاسخ میانگین را مشاهده کنید . بعد از اعمال کردن مکانیزم کش کردن صفحات وب در php , 50% بهبود در زمان پاسخگویی میانگین (avg.response time) را در cms هایی که برای مشتریان طراحی شد , دریافت کردم .

جمع بندی

توجه داشته باشید که با بالارفتن بازدید وبسایت و افزایش بازدهی آن برای جذب مخاطب و دریافت ورودی بیشتر از موتور های جستجو مانند گوگل حتما و حتما از سیستم کش در سایت استفاده کنید . کش کردن صفحات در وب می تواند تا حد بسیار زیادی سرعت بارگذاری وبسایت و دفعات بعدی برای کاربرانی که برای بار های دوم و سوم و یا بیشتر به سایت سر می زنند , افزایش دهد . همچنین با کش کردن صفحات وب می توانید تا حدود بسیاری در پرداخت هزینه های بالا برای سرور های اختصاصی و منابع بیشتر سخت افزاری , صرفه جویی کنید.

برای دریافت فایل کامل کدهای کش کردن صفحات وب در php از باکس دانلود استفاده کنید

هر گونه مشکلی در پیاده سازی کدها داشتید ، از قسمت نظرات اقدام کنید . سریعا ، پاسخگوی سوالات شما هستیم .

موفق و پیروز باشید.

 

حسن شفیعی توسعه دهنده وب و موبایل مدیر سایت علاقه خاصی به برنامه نویسی وب و موبایل دارم و هر روز تلاش می کنم به این حوزه مسلط تر شوم و اطلاعاتم را به شکل کاربردی برای علاقه مندان در وب به اشتراک بگذارم. اگر نیاز به برنامه نویس برای انجام پروژه و نوشتن اسکریپت های سمت وب, اپلیکیشن های اندروید و ios, پیدا کردن راه حل توسعه و غیره داشتید حتما از طریق تماس با ما/ واتساپ/ تلگرام بهم پیام بدید. برایتهیه هاست مطمین و پرسرعت کلیک کنید
مطالب زیر را حتما بخوانید
دیدگاه کاربران (۴)

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

  1. فردین ۲۷ آذر ۱۳۹۸

    سلام خسته نباشید ببخشید چطور میتونم مثل این لینک کش کنم سایتمو
    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 دارند خیلی سرعت لودش عالی هست و از افزونه ی لایت اسپید کش هم استفاده میکنه چطور میتونم برای سایتم این عمل رو انجام بدم از وردپرس استفاده میکنم ممنون

    پاسخ
    1. حسن شفیعی ۲۹ آذر ۱۳۹۸

      سلام ممنون.
      مطمین باشید تاثیر لود سایت فقط به خاطر کش کردن نیست و فاکتور های دیگه هم خیلی موثره.
      شما این سایت و سایت خودتون رو با https://gtmetrix.com یکبار چک کنید و داخل همین سایت بصورت compare یا همان مقایسه ای بزنید (اول سایت rozmusic.com رو بزنید بررسی بشه بعد از دکمه سمت راست سایت خودتون رو اضافه و مقایسه کنید) ببینید چه فاکتورهایی رو این سایت داره که سایت شما نداره چون با یک افزونه ای که این سایت استفاده کردند یا از افزونه راکت می تونید برای کش کردن به بهترین نحو بهره ببرید.
      سرعت سایت بر اساس dns یا سرور هم خیلی موثر هستش.
      موفق باشید.

      پاسخ
    2. امیر ۳۰ شهریور ۱۳۹۹

      سرورشون توی ایرانه .
      مثلا اینو ببین
      https://www.ir/

      پاسخ
    3. محمد ۲۵ آبان ۱۴۰۳

      این سایت رو ببینیدtechnobarg.com سرعت لودش از اونم بالاتره رتبه ۱۰۰ gtmetrix
      من دارم از این ایده میگیرم

      پاسخ
دوره های آموزشی