برای بهبود زمان بارگذاری صفحه برای کاربرانمان، Chrome گاهی اوقات پیوندها را در صفحه نتایج جستجوی Google و سایر وبسایتهای شرکتکننده، قبل از اینکه کاربر روی آنها کلیک کند، از پیش واکشی میکند. این ویژگی در این مقاله از منظر فنی به تفصیل توضیح داده شده است.
این ویژگی متکی به یک پروکسی CONNECT
است که آدرس IP کاربر را از وب سایتی که باید از قبل واکشی شود پنهان می کند. به نوبه خود، این امر ذاتاً ایجاد اتصال را از دید مدیران شبکه خارج می کند.
در عین حال، متوجه می شویم که مدیران شبکه ممکن است نیاز به فیلتر کردن محتوا داشته باشند. بنابراین، ما مکانیزمی را طراحی کردهایم که توسط آن مدیران شبکه میتوانند در صورتی که کاربر روی یک پیوند از پیش واکشی شده کلیک کند، به این کار ادامه دهند.
فیلتر کردن محتوا
برای حفظ حریم خصوصی کاربر، Chrome هیچ گونه جستجوی DNS قابل مشاهده را هنگام واکشی اولیه پیوندها صادر نمی کند. اگر کاربر به یک پیوند از پیش واکشی شده هدایت شود، منابع صفحه از کش محلی بدون انجام جستجوی DNS قابل مشاهده واکشی می شود. یکی از عوارض جانبی این است که وقتی کاربر به یک پیوند از پیش واکشی شده پیمایش می کند، ممکن است فیلتر محتوا آنطور که در نظر گرفته شده کار نکند.
برای اینکه به مدیران شبکه اجازه دهیم محتوا را در این پیمایشهای از پیش واکشی شده فیلتر کنند، یک مکانیسم سیگنالینگ طراحی کردیم تا به Chrome دستور دهیم وقتی کاربر روی یک پیوند از پیش واکشی شده کلیک میکند، جستجوی DNS صادر کند. این جستجوی DNS در همان زمان و به همان شیوهای اتفاق میافتد که گویی واکشی اولیه اتفاق نیفتاده است و همین فرصت را برای مدیران برای فیلتر کردن محتوا فراهم میکند. Chrome بارگیری منابع از پیش واکشی شده را از حافظه پنهان متوقف می کند تا زمانی که این جستجوی DNS دوم با موفقیت انجام شود. اگر شکست بخورد، کروم از منابع از پیش واکشی شده استفاده نمی کند و در عوض صفحه را به روش معمول بارگیری می کند. توجه داشته باشید که با توجه به اینکه کروم باید منتظر تکمیل جستجوی DNS باشد، این کار جریمه عملکردی را برای کاربر به همراه دارد.
جزئیات مکانیسم سیگنالینگ
برای کاربرانی که بارگیری پیشبارگیری صفحه را غیرفعال نکردهاند، Chrome بهطور ناهمزمان یک جستجوی DNS برای dns-tunnel-check.googlezip.net
هنگام راهاندازی Chrome یا زمانی که تغییر رابط شبکه رخ میدهد، صادر میکند.
در اینجا نتایج احتمالی برای بررسی dns-tunnel-check.googlezip.net
آمده است:
- اگر پاسخ
NXDOMAIN
یاSERVFAIL
باشد، یا اگر یک کد پاسخNOERROR
برگردانده شود، اما حاوی سوابقA
وAAAA
نباشد، Chrome متوجه میشود که مدیران شبکه نیاز به مشاهده در پیمایشها به صفحات از پیش واکشی شده دارند (به حالت Preflight مراجعه کنید). - اگر پاسخ هر مقدار دیگری باشد، Chrome مستقیماً از منابع از پیش واکشی شده استفاده میکند و وقتی کاربر به صفحه از پیش واکشی شده پیمایش میکند، هیچ جستجوی DNS اضافی صادر نخواهد کرد.
نتیجه این بررسی تا زمانی که Chrome راهاندازی مجدد نشود، یا تا زمانی که رابط شبکه تغییر کند، باقی میماند، که یک جستجوی DNS جدید برای dns-tunnel-check.googlezip.net
با نتیجه بالقوه متفاوت آغاز میکند.
حالت قبل از پرواز
در این حالت، قبل از پیمایش به صفحهای که از طریق پراکسی واکشی اولیه از پیش واکشی شده است، Chrome یک جستجوی DNS برای دامنه مربوطه صادر میکند و منتظر میماند تا پاسخ بازگردد:
- اگر پاسخ شامل مجموعهای از آدرسهای IP خالی نباشد، Chrome با استفاده از منابع از پیش واکشی شده، پیمایش را ادامه میدهد.
- اگر پاسخ
REFUSED
(ترجیح میدهد) یاNXDOMAIN
، Chrome پیمایش را ادامه نمیدهد و در عوض صفحه خطای DNS مربوطه را نشان میدهد.