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

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

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

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

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

שימוש בסיסי

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

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

    void

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

    () => {...}

שיטות

createPartialResponse()

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

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

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

פרמטרים

  • בקשה

    בקשה

    בקשה, שאמורה להכיל כותרת טווח:

  • originalResponse

    תשובה

    תשובה.

החזרות

  • הבטחה<Response>

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