ویژگیِ preload به مرورگر پیشنهاد میدهد رسانه را چهقدر پیشاپیش آماده کند؛ قراردادِ قطعیِ سقفِ دانلود نیست. تعیینِ src، فراخوانیِ load و درخواستِ جداگانهٔ کدِ صفحه هم در رفتار دخالت دارند. برایِ دیدنِ نتیجه، پنج حالت را رویِ یک WAV مصنوعیِ دوثانیهای و فقط در نشانیِ محلی اجرا کردیم؛ هیچ صدا پخش یا میکروفنی باز نشده است.
سه مقدارِ شناختهشده و یک کنترلِ جدا
none درخواستِ پیشبارگذارینشدن، metadata پیشنهادِ دریافتِ اطلاعاتی مثلِ مدت و auto اجازهٔ پیشدریافتِ بیشتر را بیان میکنند. مقدارِ خالی هم در قراردادِ منبع معادلِ auto است. استاندارد میگوید این راهنما ممکن است بر اساسِ ترجیحِ کاربر یا وضعیتِ اتصال نادیده گرفته شود؛ آن را قفلِ شبکه یا حقِ دسترسی به فایل نمینامیم.
حالتِ کنترلیِ deferred-source در فایلِ ما مقدارِ استانداردِ preload نیست. در آن audio با preload=none ساخته میشود، اما هیچ src تعیین و load هم فراخوانی نمیشود. این نامِ محلیِ سناریویِ آزمون است تا نبودِ منبع را از پیشنهادِ none رویِ یک منبعِ تعیینشده جدا کنیم.
قراردادِ واقعیِ آزمایش چه بود؟
فایلِ Pythonِ همراه با دادهٔ تولیدشدهٔ سینوسی، WAV تککانالهٔ PCM16 با نرخِ ۱۶۰۰۰ و مدتِ دو ثانیه میسازد؛ اندازهٔ فایل ۶۴۰۴۴ بایت است. دو سرور فقط رویِ ۱۲۷.۰.۰.۱ گوش میدهند و فایلِ شخصی یا دادهٔ گفتار دریافت نمیکنند. برایِ این بررسی از نشانیِ نخست و مسیرِ tone.wav استفاده شد.
مرورگرِ Edge جدا و بیصدا با نسخهٔ 154.0.4258.37 بود. هر حالت در context تازه و بدونِ حساب اجرا شد؛ رهگیریِ مسیرهایِ صفحه فعال بود و این تنظیم میتواند کش را غیرفعال کند. پس از تعیینِ src در سه حالتِ استاندارد، load را هم صریح صدا زدیم و ۱۲۰۰ میلیثانیه مشاهده کردیم. نتیجه، رفتارِ بدونِ load یا مرورگرهایِ دیگر نیست.
پاسخهایِ واقعاً دیدهشده
| حالتِ همین آزمون | پاسخِ صوت | جمعِ بایتِ بدنهٔ پاسخ | مدتِ معلوم |
|---|---|---|---|
| none | 1 | 64044 | 2 |
| metadata | 1 | 64044 | 2 |
| auto | 1 | 64044 | 2 |
| none+explicit-fetch | 2 | 128088 | 2 |
| deferred-source | 0 | 0 | نامعلوم |
در هر سه حالتِ none،metadata وauto با src و load صریح، درخواستِ رسانه با Range: bytes=0- فرستاده شد و پاسخِ ۲۰۶ کلِ ۶۴۰۴۴ بایتِ این فایلِ کوچک را داشت. بنابراین در این اجرا حتی metadata به دریافتِ بخشِ کوچکی محدود نشد. این مشاهده را قاعدهٔ همیشگیِ همهٔ فایلها یا نسخهها نمیدانیم.
در حالتِ none همراهِ fetchِ جدا، یک پاسخِ ۲۰۰ برایِ fetch و یک پاسخِ ۲۰۶ برایِ رسانه دیدیم؛ جمعِ بدنهها ۱۲۸۰۸۸ بایت شد. جمعِ بایتِ بدنه، اندازهٔ یکتایِ فایل یا همهٔ بایتهایِ رویِ سیم با سربرگ و رمزنگاری نیست. زمانِ کلِ شبکه، RAM و کیفیتِ پخش را هم اندازه نگرفتیم.
کنترلِ بدونِ src چه چیزی را نشان داد؟
در همین پنجرهٔ مشاهده، برایِ audioِ بدونِ src هیچ درخواستِ tone.wav ثبت نشد؛ readyState و networkState صفر و مدت هنوز نامعلوم بود. نامعلومبودنِ مدت را صفرثانیهبودنِ فایل نمینامیم. این کنترل فقط دربارهٔ همین عنصر و کدِ محلی است؛ مانعِ fetchِ مستقل یا درخواستِ عناصرِ دیگرِ صفحه نیست.
اگر هدف تعویقِ دریافت تا اقدامِ کاربر است، زمانِ واگذاریِ منبع و کدهایی که load یا fetch میزنند را هم بررسی کنید. صرفِ عوضکردنِ یک attribute رویِ رسانهای که قبلاً دریافت شده، دادهٔ دریافتشده را پس نمیگیرد. در سایتِ واقعی، autoplay،کش،اندازهٔ فایل و تنظیمِ مرورگر باید در گزارش ثبت شوند.
تمرین را چگونه بازتولید کنیم؟
- فایلِ Python را در محیطِ محلی اجرا و نشانیِ اولی را که چاپ میکند باز کنید؛ نیازی به فایلِ صدایِ خودتان نیست.
- در همان صفحهٔ محلی، تابعِ متنیِ همراه را در ابزارِ توسعهدهنده وارد کنید؛ تابع رویِ میزبانِ دیگری اجرا نمیشود.
- در Network مسیرِ tone.wav را فیلتر و هر سناریو را در context تازه آزمایش کنید؛ نمونهٔ فراخوانی
await probeTeachingPreload('metadata')است. - حالتِ
deferred-sourceوprobeTeachingPreload('none', true)را جدا ببینید؛ دومی عمداً fetch مستقل دارد. - نسخهٔ مرورگر، وضعیتِ کش، پنجرهٔ مشاهده و صداهایِ درخواستنشده را کنارِ نتیجه ثبت کنید؛ اجرا هیچ play یا دسترسیِ میکروفن ندارد.
خواندنِ پاسخِ Range برایِ تفسیرِ بایت و وضعیتِ پاسخ مفید است؛ آن موضوع با راهنمایِ پیشبارگذاری یکی نیست. اگر خروجیِ اپراگو قرار است در سایت پخش شود، میزبان و شیوهٔ بارگذاری را جدا هماهنگ کنید؛ این تمرین رفتارِ داخلیِ محصول یا تضمینِ کاهشِ هزینهٔ شبکه نیست.
فایل تمرین و منبع
سازندهٔ محلیِ WAV مصنوعی و دو نشانیِ ۱۲۷.۰.۰.۱ · تابعِ پنج حالتِ preload و کنترلِ بدونِ منبع، فقط برایِ همان صفحهٔ محلی
- مرجعِ MDN؛ معنایِ none،metadata وauto بهعنوانِ راهنما
- استانداردِ اصلیِ HTML؛ راهنما بودنِ preload و امکانِ نادیدهگرفتنِ آن
منابع در 2026-11-04 خوانده شدند؛ این تاریخ، تاریخ انتشار منبع نیست. مثالها و فایلهای این راهنما آموزشی و ساختهٔ تحریریهاند.