بهبود جستجوی گوگل با دیکشنری های فشرده

تاریخ انتشار: 14 مه 2025

Compression Dictionary Transport استاندارد جدیدی است که به ما امکان می‌دهد محتوای تکراری را در بین درخواست‌ها فشرده کنیم و در اواخر سال 2024 در Chrome 130 منتشر شد. جستجوی Google از این فناوری جدید استفاده کرده و پیشرفت‌های زیادی را شاهد بوده است.

فرصت

در صفحات وب که ما بازدید می کنیم موارد تکراری زیادی وجود دارد. بسیاری از صفحات در یک وب‌سایت از بخش‌های بزرگی از یک کد تشکیل شده‌اند - خواه HTML، CSS یا جاوا اسکریپت که فقط محتوای بین این کد تغییر می‌کند. در حالی که هر نتیجه ترکیبی منحصر به فرد از صدها ویژگی است که منجر به محتوای کاملاً منحصر به فرد می شود، هنوز اشتراکات زیادی در کد ارسال شده به مرورگر برای تولید آنها وجود دارد.

از نظر بصری، بیشتر صفحات نتایج جستجو تا حدودی مشابه هستند، صرفنظر از اینکه عبارت جستجوی وارد شده چیست: در بالا لوگوی Google، نوار جستجو، و برخی از کنترل ها را داریم. در وسط چند برگه برای نوع جستجو و سپس لیستی از نتایج جستجو در سمت چپ با ویجت های مختلف برای کمک به کاربر و زمینه اضافی در سمت راست با پانل های "درباره" داریم:

صفحه نتایج جستجوی Google معمولی با نوار جستجو در بالا، نتایج در ستون اصلی سمت چپ و اطلاعات اضافی در سمت راست
صفحه نتایج جستجوی گوگل

در نهایت در پایین، گزینه های صفحه بندی و پاورقی استاندارد را داریم. این فقط چیزی است که به صورت بصری در دسترس است - در پشت صحنه تعداد زیادی کد (HTML، CSS و جاوا اسکریپت) برای تولید این صفحه وجود دارد. بسیاری از این کد مستقیماً در HTML صفحه به عنوان بهینه‌سازی عملکرد درج می‌شوند. در حالی که این امکان بارگذاری سریع‌تر صفحه را فراهم می‌کند، اما هزینه اشتراک‌گذاری آن کد بین صفحات نتایج مختلف را نیز به همراه دارد - مانند یک منبع ذخیره‌شده خارجی.

فشرده سازی در وب

فشرده سازی یک فناوری پر استفاده برای وب است. فشرده‌سازی منابع با gzip یا الگوریتم‌های جدیدتر مانند Brotli یا Zstandard، اجازه می‌دهد از تکرار درون یک فایل با فشرده‌سازی بدون اتلاف جلوگیری شود تا همه اطلاعات تا حد ممکن روی سرور قبل از ارسال بسته شود. سپس مرورگر می تواند بایت های فشرده شده را برای بازیابی محتوای اصلی باز کند. برای تصاویر، فشرده سازی با اتلاف با حذف بایت های اضافی که ممکن است تفاوت محسوسی برای کاربران نداشته باشد، مزایای مشابهی را ارائه می دهد.

تا همین اواخر، فشرده سازی در وب به فشرده سازی در منابع محدود می شد. فشرده سازی در منابع مختلف و مطمئناً در صفحات مختلف امکان پذیر نبود. این مدت‌ها به‌عنوان محدودیتی شناخته شده است که مهندسان وب به دنبال رفع آن هستند.

فشرده سازی دیکشنری حمل و نقل به نجات!

Browser Support

  • کروم: 130.
  • لبه: 130.
  • فایرفاکس: پشتیبانی نمی شود.
  • سافاری: پشتیبانی نمی شود.

Source

فشرده‌سازی دیکشنری انتقال استاندارد جدیدی است که امکان فشرده‌سازی منابع را با استفاده از «فرهنگ‌های» مشترک فراهم می‌کند که اجازه می‌دهد سری‌های رایج بایت‌ها با منابع آن فرهنگ لغت مشترک جایگزین شوند.

الگوریتم های فشرده سازی مدرن مانند Brotli و Zstandard از استفاده از فرهنگ لغات اصطلاحات رایج پشتیبانی می کنند که با جایگزین کردن آن اصطلاحات با یک مرجع کوچکتر به فرهنگ لغت، امکان فشرده سازی بیشتر را فراهم می کند. Brotli حتی با یک فرهنگ لغت داخلی از اصطلاحات رایج وب ارائه می شود. Compression Dictionary Transport با ارائه راه هایی برای سرور و مرورگر برای به اشتراک گذاشتن فرهنگ لغت های سفارشی بر این اساس استوار است.

دیکشنری های سفارشی می توانند منبعی باشند که قبلاً در سایت استفاده شده است. برای مثال، می‌توانید از app.v1.js به‌عنوان یک فرهنگ لغت هنگام دانلود app.v2.js استفاده کنید تا اساساً تفاوت را دانلود کنید (اغلب به عنوان «فشرده‌سازی دلتا» شناخته می‌شود). متناوبا، یک منبع فرهنگ لغت جداگانه را می توان با یک برچسب <link rel="compression-dictionary"> (یا هدر Link HTTP معادل) مشخص کرد.

این می تواند به طور چشمگیری حجم دانلود منابع را با محتوای زیاد یا کد به اشتراک گذاشته شده کاهش دهد، مانند صفحات نتایج جستجو که قبلا ذکر شد.

استفاده جستجوی گوگل از فرهنگ لغت فشرده

تیم جستجوی Google به طور مداوم به دنبال بهبود عملکرد جستجو است. آنها اولین پذیرنده فرهنگ لغت فشرده بودند زیرا پتانسیل این فناوری را دیدند.

جستجو از فشرده سازی مشترک Brotli برای صفحات نتیجه خود با یک فایل فرهنگ لغت جداگانه ساخته شده از نمونه نماینده نتایج جستجو استفاده می کند. یک خط لوله خودکار قوی تضمین می کند فرهنگ لغت تازه باقی می ماند و با محتوای SRP که مکرراً در حال تغییر است و چندین بار در روز منتشر می شود، همگام می شود. می توانید از DevTools استفاده کنید تا ببینید دقیقاً چگونه کار می کند.

هنگامی که یک مشتری برای اولین بار یک صفحه نتایج جستجو را بارگیری می کند، سرور با استفاده از Link: header HTTP با یک نوع rel=compression-dictionary پیوندی به فرهنگ لغت ارائه می دهد:

پاسخ سرصفحه‌های HTTP در Chrome DevTools با برجسته‌شده Link rel=compression-dictionary header
Chrome DevTools سربرگ Link را در برگه Network نشان می‌دهد

اگر مشتری از فشرده‌سازی فرهنگ لغت Brotli پشتیبانی می‌کند، اما هنوز فرهنگ لغت مشترک را در حافظه پنهان ذخیره نکرده است، مرورگر این فرهنگ لغت را در زمان بی‌کار دانلود می‌کند. پاسخ فرهنگ لغت شامل سرصفحه پاسخ Use-As-Dictionary است که به مرورگر می گوید که برای چه منابعی می تواند از این فرهنگ لغت استفاده کند:

پاسخ سرصفحه‌های HTTP در Chrome DevTools با برجسته‌سازی سرصفحه Use-As-Dictionary
Chrome DevTools که عنوان Use-As-Dictionary را در برگه Network نشان می دهد

فرهنگ لغت از معنای استاندارد cache-control استفاده می کند و برای هر منبعی که با قوانین تعریف شده در آن سربرگ مطابقت داشته باشد در دسترس خواهد بود - در این مثال صفحاتی که با /search شروع شده اند.

برای بارگیری‌های صفحه نتایج جستجوی آینده، مرورگر می‌تواند با استفاده از سرصفحه درخواست HTTP Available-Dictionary به سرور بگوید که یک فرهنگ لغت دارد. بارگذاری مجدد صفحه این را در عمل نشان می دهد:

پاسخ سرصفحه‌های HTTP در Chrome DevTools با برجسته‌سازی سرصفحه‌های Available-Dictionary
Chrome DevTools هدر Available-Dictionary را در برگه Network نشان می دهد

با فعال بودن کادر Preserve log و فیلتر کردن، می‌توانیم این دو پاسخ را با هم مقایسه کنیم:

مقایسه دو بارگیری از یک منبع با حجم بالای 107 کیلوبایت و پایین 60 کیلوبایت
تب شبکه Chrome DevTools

در این مثال، اولین درخواست پاسخ کامل 107 کیلوبایتی است و از فشرده‌سازی Brotli ( br ) استفاده می‌کند، در حالی که درخواست دوم بارگذاری مجدد تقریباً نصف اندازه آن در 60 کیلوبایت است و از فشرده‌سازی دیکشنری-فشرده شده Brotli ( dcb ) استفاده می‌کند که منجر به زمان دانلود سریع‌تر می‌شود.

در کروم، می‌توانید صفحه chrome://net-internals/#sharedDictionary برای مشاهده دیکشنری‌های مشترک مشاهده کنید و اگر می‌خواهید این مثال را از ابتدا تکرار کنید، آن‌ها را پاک کنید.

صفحه دیکشنری مشترک که یک فرهنگ لغت مشترک را نشان می دهد
صفحه Net-Internals #sharedDictionary

نتایج

این تغییر در بهار سال 2025 برای کاربران جستجو و ابتدا برای کاربران کروم اعمال شد. این امر میانگین اندازه بارگذاری HTML را در همه کاربران Chrome در مقایسه با فشرده سازی استاندارد Brotli 23 درصد کاهش داد. این میانگین کلی هم نتایج غیرفشرده‌شده با فرهنگ لغت (مثلاً کاربرانی که برای اولین‌بار بدون فرهنگ لغت دارند) و هم نتایج جستجوی فشرده‌شده توسط فرهنگ لغت را شامل می‌شود. برای نتایج فشرده شده توسط فرهنگ لغت، پس انداز حتی بزرگتر است - همانطور که با بهبود نزدیک به 50٪ در مثال قبلی که به آن نگاه کردیم دیدیم.

این منجر به بزرگترین بهبود رنگ محتوایی (LCP) به میزان 1.7٪ به طور کلی و تا 9٪ در شبکه های با تاخیر بالا شد. این ممکن است کوچک به نظر برسد، اما جستجوی گوگل یک سایت بسیار بهینه شده است، بنابراین دستاوردهای این بزرگی بسیار زیاد است. سایر سایت‌ها ممکن است شاهد پیشرفت‌های بزرگ‌تری با این فناوری باشند.

آن را در سایت خود امتحان کنید!

Compression Dictionary Transport اکنون در همه مرورگرهای مبتنی بر Chromium (Chrome، Edge، Opera و غیره) آماده استفاده است. این یک پیشرفت تدریجی است که توسط مرورگرهای غیر پشتیبانی نادیده گرفته می شود، اما از آنجایی که مرورگرهای بیشتری از آن پشتیبانی می کنند، می توانند از آن نیز بهره مند شوند.

چالش‌هایی که این فناوری به آن‌ها می‌پردازد به‌خاطر جستجوی Google خاص نیست. بسیاری از سایت‌ها می‌توانند از Compression Dictionary Transport بهره ببرند، چه با یک فرهنگ لغت جداگانه مانند جستجوی استفاده شده، یا با استفاده از یک منبع موجود به عنوان فرهنگ لغت (مانند نسخه قبلی یک برنامه هنگام ارائه نسخه جدید).

راهنمای MDN را برای جزئیات بیشتر در مورد نحوه عملکرد این فناوری و نحوه پیاده سازی آن در سایت خود بررسی کنید.

برای ایجاد منابع فشرده مبتنی بر فرهنگ لغت و استفاده از آنها در حد مناسب، نیاز به تنظیماتی در سرور یا فرآیند ساخت شما دارد - اما نتایج می تواند از نظر عملکرد به طور جدی چشمگیر باشد!