Caching ใน Koa.js

การใช้แคช (Caching) ใน Koa.js ช่วยลดการร้องขอที่ซ้ำซ้อนและเพิ่มประสิทธิภาพของแอปพลิเคชันของคุณ. นี่คือวิธีการใช้แคชใน Koa.js:

  1. ใช้ Middleware สำหรับแคช:

    คุณสามารถใช้ middleware koa-cache-control เพื่อควบคุมการแคชข้อมูลในการตอบสนอง (response) ของแอปพลิเคชัน Koa.js:

    1
    npm install koa-cache-control

    หรือถ้าคุณใช้ Yarn:

    1
    yarn add koa-cache-control

    หลังจากติดตั้งแพ็กเกจ koa-cache-control, คุณสามารถกำหนด middleware ในแอปพลิเคชัน Koa.js:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    const Koa = require('koa');
    const cacheControl = require('koa-cache-control');

    const app = new Koa();

    // ใช้ middleware สำหรับแคช
    app.use(cacheControl());

    // เสมือนกับตัวอย่าง route
    app.use(async (ctx) => {
    // กำหนดความยาวของแคชในวินาที (ในตัวอย่างคือ 1 ชั่วโมง)
    ctx.cacheControl = 'public, max-age=3600';

    // ส่งข้อมูลในการตอบสนอง
    ctx.body = 'ข้อมูลที่ควรถูกแคช';
    });

    app.listen(3000, () => {
    console.log('Server is running on port 3000');
    });
  2. การกำหนดความยาวของแคช:

    ในตัวอย่างข้างต้น, เรากำหนดความยาวของแคชโดยใช้ ctx.cacheControl ใน route โดยกำหนดให้แคชมีระยะเวลาหมดอายุเป็น 1 ชั่วโมง (max-age=3600) เมื่อข้อมูลถูกแคชแล้ว แคชจะถูกเก็บไว้ในหน่วยความจำของเบราว์เซอร์ของผู้ใช้ ซึ่งทำให้เราลดการร้องขอข้อมูลซ้ำซ้อนได้.

  3. การสร้างแคชหลังการร้องขอ:

    หากคุณต้องการสร้างแคชเองหลังการร้องขอเพื่อให้มีการควบคุมมากขึ้น, คุณสามารถใช้ตัวแปร ctx.response.set() เพื่อกำหนดค่าความยาวของแคชและคีย์แคช:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    app.use(async (ctx) => {
    // ตั้งค่าความยาวของแคช
    ctx.set('Cache-Control', 'public, max-age=3600');

    // ตั้งค่าคีย์แคช
    ctx.set('ETag', 'my-unique-key');

    // ตรวจสอบการร้องขอหากมีแคชในเซิร์ฟเวอร์
    if (ctx.fresh) {
    ctx.status = 304; // ไม่ต้องส่งข้อมูลอีกครั้ง
    return;
    }

    // สร้างข้อมูลในการตอบสนอง
    ctx.body = 'ข้อมูลที่ควรถูกแคช';
    });

การใช้แคชใน Koa.js ช่วยเพิ่มประสิทธิภาพการร้องขอและลดการโหลดบริการของแอปพลิเคชันของคุณ คุณสามารถปรับแต่งการแคชให้เหมาะกับความต้องการของโปรเจกต์ของคุณโดยใช้ middleware koa-cache-control หรือการตั้งค่าแคชเองใน route ของคุณ.