cache ระบบเพิ่มความเร็วการโหลดให้กับเว็บไซต์ด้วย jquery ajax

Web Cache (ภาษาไทย: เว็บแคช) คือระบบการเก็บข้อมูลผลลัพท์ของ Web Server และ Database Server ไว้ในระบบจาก URL ที่ผู้ใช้งานเรียก และเมื่อผู้ใช้งานมีการเรียกซ้ำอีกครั้ง ระบบจะไม่ทำการประมวลผล แต่จะนำเอาผลลัพท์ที่ได้บันทึกไว้ส่งไปให้ผู้ใช้งานแทนทันที โดยไม่ต้องรีรออะไรเลย

ถ้าการประมวลผลเว็บไซต์ a มีระยะเวลา 10 วินาที แต่ถ้าหน้าเว็บไซต์ a มีการทำ Cache ไว้หลังจากประมวลผลเสร็จแล้ว เมื่อผู้ใช้งานเรียกเข้ามาอีกครั้ง จะทำให้ระยะเวลา 10 วินาทีเหลือเพียงไม่ถึง 1 วินาทีด้วยซ้ำ


Web Cache ทำให้สามารถที่จะเข้าเว็บไซต์ได้เร็วยิ่งขึ้น เพราะจะไม่มีการปะมวลผลใด ๆ ของหน้าเว็บไซต์ที่ผู้ใช้งานเรียก แต่อย่างไรก็ตาม Web Cache ก็ยังมีข้อเสียในการทำงาน นั่นคือข้อมูลที่ได้ อาจจะไม่อัพเดตตรงกันเสมอ เพราะฉะนั้นระบบ Web Cache จึงจำเป็นที่จะต้องมีการตั้งเวลาให้หมดอายุของ Cache และทำการอัพเดต Cache ใหม่ ซึ่งถ้าหากว่าเวลาของ Cache เยอะ จะทำให้ข้อมูลอัพเดตช้าไปด้วย


การอัพเดตของ Cache กับปัญหา
ในการอัพเดตของ Cache นั้นอย่างที่บอกไปนั่นคืออาจจะมีปัญหาการอัพเดตของข้อมูล ตัวอย่างเช่น ระบบ Cache ได้ทำ Cache ไว้ในเวลา 10.00 น. และระยะเวลาของ Cache คือ 5 นาที เท่ากับว่า ถ้ามีการอัพเดตหน้าเว็บ หรืออัพเดตข้อมูลใหม่ในหน้าที่ถูกทำ Cache อยู่ จะทำให้ข้อมูลที่อัพเดตนั้นจะสามารถเห็นได้ในเวลา 10.05 น. เพราะว่าจะมีการอัพเดต Cache ในเวลาอีก 5 นาทีหลังจากทำ Cache นั่นเอง



ข้อดีสุด ๆ ของการทำ Web Cache


จากตัวอย่างของข้อเสียในการทำ Cache เรามาดูข้อดีของ Web Cache กันบ้าง เนื่องจากมีการอัพเดต Cache ทุก ๆ 5 นาทีหรือพูดอีกนัยหนึ่งก็คือทำ Web Cache ไว้ 5 นาที ข้อดีของ Web Cache ก็คือการช่วยลดการทำงานของ Server รวมถึงการประมวลผล การเชื่อมต่อกับฐานข้อมูล ใน 1 วันมี 86,400 วินาที และใน 5 นาที (ระยะเวลาทำ Cache) มีทั้งหมด 300 วินาที ถ้าผู้ใช้งานเรียกเว็บไซต์วันละ 86,400 ครั้ง เท่ากับว่า 1 วัน Server จะทำการประมวลผลวินาทีละ 1 ครั้ง แต่ถ้าทำระบบ Web Cache เท่ากับว่า 86,400 / 300 = 288 ครั้งในการประมวลผล 1 วันเท่านั้น

สรุปให้เข้าใจ Web Cache ง่าย ๆ

– ทำ Web Cache ระบบ Server จะทำการประมวลผล 288 ครั้งต่อวัน

– ไม่ทำ Web Cache ระบบ Server จะทำการประมวลผล 86400 ครั้งต่อวัน

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<html>
<?php
include("cache-kit.php");  // เรียกใช้ไฟล์ php class
$cache_active = true;  // กำหนดให้ทำการ cache
$cache_folder = 'cache/';  // กำหนดไฟลเดอร์ที่ไว้เก็บไฟล์ cache
$fullPathFile="http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];   
$page_cache = acmeCache::fetch($fullPathFile.$n_browser, 10);
// ทำการ cache หน้าเว็บไซต์ใหม่ ไว้ในตัวแปร $page_cache ทุกๆ 10 วินาที  สามารถกำหนดเป็นค่าอื่นได้
if(!$page_cache){  // ตรวจสอบว่าถ้าไม่มีข้อมูลที่ cache ไว้ ให้ทำการเก็บค่า html ไว้สำหรับบันทึก cache
?>
<head>
</head>



  </html>
  <?php
    if(!isset($_POST['genTime'])){
        echo "<script type="text/javascript">\r\n";
            echo "$(function(){\r\n";
                echo "setTimeout(function(){\r\n";
                echo "$.post('genCache.php',{nameFile:'".$fullPathFile."'});\r\n";
                echo "},2000);\r\n";
            echo "});\r\n";
        echo "\r\n";
    }
}else{
    echo $page_cache;  // แสดงข้อมูลที่ทำการ cache
}
?>

ไฟล์ genCache.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
include("cache-kit.php");  // เรียกใช้ไฟล์ php class
$cache_active = true;  // กำหนดให้ทำการ cache
$cache_folder = 'cache/';  // กำหนดไฟลเดอร์ที่ไว้เก็บไฟล์ cache
$url  = $_POST['nameFile'];
$data = array('genTime' => time());
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$data = curl_exec($ch);
curl_close($ch);
acmeCache::save($_POST['nameFile'].$n_browser,$data); // ทำการบันทึก html จากตัวแปร $page_cache ไว้ใน cache ชื่อ page_cache
?>

จากนั้นสร้างโฟเดอร์ชื่อ cache ไว้เก็บข้อมูล

ดาวน์โหลด…..!!!



ขอบคุณข้อมูลจาก http://www.thaimeboard.com ,http://blogs.riverbed.com,http://www.ninenik.com

Comments

comments

Powered by Facebook Comments