یکی از عوامل مؤثر در جلو و عقببردن صوت، امکان دریافت بخش موردنیاز فایل از سرور است. درخواست HTTP Range میتواند یک بازه بایت را بخواهد؛ این بازه الزاماً برحسب ثانیه نیست. برای پیداکردن علت، پاسخ واقعی را بررسی کنید و تنها به وجود دکمه جابهجایی در پخشکننده اکتفا نکنید.
درخواست یک کیلوبایت اول چه میگوید؟
Range: bytes=0-1023
HTTP/1.1 206 Partial Content
Content-Range: bytes 0-1023/500000
Content-Length: 1024
اعداد مثال ساختگیاند. شروع و پایان بازه بایتی شاملاند؛ از۰تا۱۰۲۳ یعنی۱۰۲۴بایت. Content-Length این پاسخ طول بخش است، نه اندازه کل فایل؛ اندازه کل در Content-Range آمده است. بایت۱۰۲۴ را هم با ثانیه۱۰۲۴ یکی نگیرید؛ رابطه زمان و محل بایت به ساختار رسانه وابسته است.
سه وضعیت را جدا بخوانیم
| پاسخ | برداشت اولیه |
|---|---|
| ۲۰۶ با Content-Range سازگار | این درخواست جزئی پاسخ گرفته است؛ هنوز پخش و کدک آزموده نشدهاند |
| ۲۰۰ | در این درخواست، ممکن است کل پاسخ بهجای بخش فرستاده شده باشد؛ علت و مسیر واسط بررسی شود |
| ۴۱۶ | بازه خواستهشده قابل تأمین نیست؛ طول منبع و بازه را کنترل کنید |
پاسخ۲۰۰ بهتنهایی ثابت نمیکند هیچ نوع جابهجایی در پخش ممکن نیست؛ مرورگر شاید داده را قبلاً دریافت کرده باشد. همچنین سربرگ Accept-Ranges بهتنهایی جای آزمون پاسخ واقعی را نمیگیرد. مسیر CDN، تغییر نسخه فایل و درخواست شرطی هم میتوانند در نتیجه اثر داشته باشند.
ابزار خواندنی با دریافت محدود
کد بررسی پاسخ Range برای یک نشانی HTTP یا HTTPS، بازه۰تا۱۰۲۳ را درخواست میکند و حداکثر۱۰۲۵بایت بدنه میخواند. خروجی وضعیت و چند سربرگ فنی است؛ فایل را ذخیره، سرور را تغییر یا تنظیمات را نصب نمیکند. فقط نشانیای را بررسی کنید که مجاز به خواندن آن هستید؛ نشانی دارای رمز یا توکن را در گزارش عمومی نگذارید.
این کد برای یک Range ساده و پاسخ بدون فشردهسازی انتقالی طراحی شده است، نه همه حالتهای multipart یا سامانه احراز هویت. در آزمون محلی، پاسخهای ساختگی۲۰۶ سازگار،۲۰۰ و۴۱۶ جدا ثبت شدند. آزمون روی فایل مشتری، CDN واقعی یا کیفیت پخش مرورگر انجام نشده است.
اگر Range درست است، بعد چه کنیم؟
- نوع واقعی ظرف و کدک را با پاسخ MIME و قابلیت مرورگر تطبیق دهید.
- مدت و نقاطی از فایل را که مشکل دارند مشخص کنید؛ خطای یک بخش را به همه رسانه تعمیم ندهید.
- نسخه فایل و کش را بررسی کنید؛ قطعههای دو نسخه متفاوت را یک منبع ندانید.
- رویدادهای خطای پخش و درخواست شبکه همان لحظه را کنار هم ببینید.
- هر تغییر سرور را ابتدا در محیط آزمایش با بازگشتپذیری کنترل کنید؛ ابزار این صفحه چنین تغییری انجام نمیدهد.
برای شناخت قالب، ظرف و کدک صوت و برای بررسی WAV، ابزار مشخصات محلی را ببینید. اگر خروجی صوتی را از اپراگو دریافت میکنید، شکل تحویل و میزبان پخش را جدا هماهنگ کنید؛ این نوشته میزبانی یا CDN خاصی را به محصول نسبت نمیدهد.
منبع رفتار Range و وضعیتها: راهنمای HTTP Range در MDN. کد و سناریوهای آزمون محلی، ساخته تحریریهاند.