בקשות-טווח-עבודה

כששולחים בקשה, אפשר להגדיר כותרת range שלפיה את השרת כדי להחזיר רק חלק מהבקשה המלאה. הזה שימושי לקבצים מסוימים כמו קובץ וידאו, שבו עשוי לשנות את מיקום הסרטון.

מה המודול הזה עושה?

יכול להיות שתצטרכו להציג קובץ ששמור במטמון, אבל הדפדפן הגדיר כותרת range. בדרך כלל, הכותרת המערכת תתעלם ממנו.

המודול הזה יקרא את התגובה שנשמרה במטמון ויחזיר את טווח הנתונים שצוין.

שימוש בסיסי

כדי להשתמש בבקשות לטווח של תיבת עבודה, מוסיפים את הפלאגין אסטרטגיה שברצונכם לבדוק לגביה בקשות לטווח.

import {registerRoute} from 'workbox-routing';
import {CacheFirst} from 'workbox-strategies';
import {RangeRequestsPlugin} from 'workbox-range-requests';

registerRoute(
  ({url}) => url.pathname.endsWith('.mp4'),
  new CacheFirst({
    plugins: [
      new RangeRequestsPlugin(),
    ],
  });
);

שימוש מתקדם

אם ברצונך להשתמש בלוגיקה הזו מחוץ לפלאגין, אפשר להשתמש בפונקציה createPartialResponse().

import {createPartialResponse} from 'workbox-range-requests';

createPartialResponse(request, cachedResponse);

מידע נוסף זמין במאמרי העזרה.

סוגים

RangeRequestsPlugin

הפלאגין של בקשות טווח מאפשר למלא בקלות בקשה עם כותרת 'טווח' באמצעות תשובה שנשמרה במטמון.

כדי לעשות זאת, הוא מיירט את קריאת החזרה (callback) של הפלאגין cachedResponseWillBeUsed ומחזיר את קבוצת המשנה המתאימה של גוף התגובה שנשמר במטמון.

מאפיינים

  • constructor

    ריק

    הפונקציה constructor נראית כך:

    () => {...}

שיטות

createPartialResponse()

workbox-range-requests.createPartialResponse(
  request: Request,
  originalResponse: Response,
)

כשנותנים אובייקטים מסוג Request ו-Response כקלט, הפונקציה מחזירה הבטחה ל-Response חדש.

אם ה-Response המקורי כבר מכיל תוכן חלקי (כלומר, יש בו סטטוס של 206), אז ההנחה היא שהוא כבר ממלא את Range: את הדרישות, ולהחזיר אותו כפי שהוא.

פרמטרים

  • בקשה

    בקשה

    בקשה, שצריכה לכלול את הכותרת Range:‎.

  • originalResponse

    תשובה

    תשובה.

החזרות

  • Promise<Response>

    תגובה 206 Partial Content, עם גוף התגובה מוגדר לקטע התוכן שצוין על ידי הבקשה הכותרת Range:, או תגובת 416 Range Not Satisfiable אם לא יכולים לעמוד בתנאים של הכותרת Range:.