بررسی اجمالی

Google AMP Cache نسخه‌های ذخیره‌شده محتوای معتبر AMP منتشر شده در وب را ارائه می‌کند. برای ارائه تجربه کاربری سریع، محتوا را مستقیماً از Google AMP Cache ارائه دهید.

برای استفاده از Google AMP Cache، یک URL AMP باید مستقیماً از حافظه پنهان با استفاده از فرمت URL Cache AMP قابل دسترسی باشد. هر بار که کاربر به محتوای AMP از حافظه پنهان دسترسی پیدا می کند، محتوا به طور خودکار به روز می شود و نسخه به روز شده پس از ذخیره شدن محتوا به کاربر بعدی ارائه می شود.

فرمت URL حافظه پنهان AMP

فرمت URL Cache AMP از اجزای زیر تشکیل شده است:

مولفه شرح
نام ساب دامنه

دامنه‌های فرعی ایجاد شده توسط Google AMP Cache، زمانی که محدودیت کاراکترها و مشخصات فنی اجازه دهد، برای انسان قابل خواندن خواهند بود و بسیار شبیه دامنه خود ناشر خواهند بود. در صورت امکان، Google AMP Cache هر زیر دامنه را با استفاده از موارد زیر ایجاد می کند:

  1. تبدیل دامنه سند AMP از IDN (Punycode) به UTF-8.
  2. هر "-" (خط تیره) را با "--" (2 خط تیره) جایگزین کنید.
  3. جایگزین کردن هر "." (نقطه) با علامت "-" (خط تیره).
  4. تبدیل مجدد به IDN (Punycode).

برای مثال، pub.com به pub-com.cdn.ampproject.org نقشه می‌دهد. در جایی که محدودیت‌های فنی مانع ایجاد یک زیر دامنه قابل خواندن توسط انسان می‌شود، به جای آن از هش یک طرفه استفاده می‌شود.

نوع محتوا نوع محتوا یکی از موارد زیر است: 'c' برای یک سند AMP HTML، 'i' برای یک تصویر، یا 'r' برای منبعی مانند فونت. Google AMP Cache برای منابعی که با این نوع محتوا مطابقت ندارند، خطای 404 را برمی‌گرداند (به خطای اصلی مراجعه کنید).
'های اختیاری' در صورت وجود، باید Google محتوا را از مبدا با استفاده از TLS (HTTPS امن) واکشی کند. اگر 's' وجود نداشته باشد، محتوا با استفاده از HTTP ساده از مبدأ واکشی می شود.
URI URI محتوایی که باید واکشی شود. URI نمی تواند شامل یک طرح باشد. یعنی «http://» یا «https://» وجود ندارد.

پیدا کردن نام زیر دامنه

به طور معمول، نام زیر دامنه برای یک URL حافظه پنهان Google AMP، تبدیلی قابل خواندن توسط انسان از URL اصلی با استفاده از مراحل ذکر شده در بالا خواهد بود. با این حال، از آنجایی که شرایطی وجود دارد که ممکن است این درست نباشد، بهترین راه برای بازیابی URL های حافظه پنهان Google AMP برای برنامه های آماده تولید، استفاده از Google AMP Cache URL API است.

برای موقعیت‌های غیر تولیدی، برای تعیین نام زیردامنه‌ای که Google AMP Cache ایجاد می‌کند، ابزار تعاملی Using the Google AMP Cache را در amp.dev امتحان کنید.

مثال درخواست سند با استفاده از TLS

درخواست یک سند HTML AMP (مشخص شده با پیشوند /c ) که از https://example.com/amp_document.html واکشی شده است:

https://example-com.cdn.ampproject.org/c/s/example.com/amp_document.html

از آنجا که /s از پیشوند /c پیروی می کند، سند با استفاده از TLS از example.com واکشی می شود.

مثال درخواست تصویر با استفاده از HTTP ساده

درخواست یک تصویر (مشخص شده با پیشوند /i ) که از http://example.com/logo.png واکشی شده است:

https://example-com.cdn.ampproject.org/i/example.com/logo.png

از آنجایی که هیچ /s به دنبال پیشوند /i وجود ندارد، Google تصویر را از example.com با استفاده از HTTP ساده و نه HTTP از طریق TLS واکشی می‌کند.

مثال پارامتر پرس و جو

فرمت URL Cache AMP همچنین می‌تواند شامل پارامترهایی در رشته پرس و جو باشد. مثال زیر یک نمونه HTTPS با پارامترها است: https://example-com.cdn.ampproject.org/c/s/example.com/g?value=Hello%20World

به روز رسانی های Google AMP Cache

هنگامی که کاربر یک سند AMP را از Google AMP Cache درخواست می‌کند، حافظه پنهان به‌طور خودکار درخواست به‌روزرسانی می‌کند تا بتواند پس از ذخیره‌سازی محتوا، محتوای جدید را برای کاربر بعدی ارائه کند. با این مدل، به روز رسانی اسناد AMP به طور خودکار و سریع منتشر می شود. تعداد کمی از کاربران پس از به روز رسانی شما، نسخه به روز نشده را مشاهده خواهند کرد.

حافظه پنهان از یک مدل "بات گذشته-در حالی که-تأیید مجدد" پیروی می کند. از هدرهای ذخیره منبع، مانند Max-Age ، به عنوان راهنمایی برای تصمیم گیری در مورد قدیمی بودن یک سند یا منبع استفاده می کند. وقتی یک کاربر برای چیزی کهنه شده است درخواست می کند، این درخواست باعث می شود یک کپی جدید واکشی شود تا کاربر بعدی محتوای تازه ای دریافت کند.

برای محدود کردن میزان باری که برای سایت‌های ناشر ایجاد می‌کند، Google AMP Cache هر سندی را حداقل برای 15 ثانیه تازه و هر منبعی را حداقل برای 1 دقیقه تازه در نظر می‌گیرد. توجه داشته باشید که این اعداد ممکن است در آینده تغییر کنند، زیرا حافظه پنهان را برای تعادل بهینه بین تازگی و بارگذاری در سایت‌های ناشر تنظیم می‌کنیم.

بهینه سازی و اصلاحات کش

Google AMP Cache بهینه سازی ها و تغییراتی را انجام می دهد، مانند موارد زیر:

  • محتوا را تأیید می کند که واقعاً در قالب AMP است و تمام اهداف عملکرد AMP را برآورده می کند.
  • علاوه بر اسناد AMP، تصاویر و فونت ها را در حافظه پنهان ذخیره می کند.
  • حداکثر ابعاد تصویر را برای جلوگیری از مشکلات حافظه مرورگر و پاسخگویی ضعیف محدود می کند.
  • تغییرات مختلفی برای بهبود راندمان تحویل تصاویر از طریق برچسب amp-img مانند:
    • حذف داده هایی که نامرئی یا به سختی قابل مشاهده هستند، مانند ابرداده های خاص.
    • تبدیل تصاویر به فرمت های تصویری کوچکتر و مناسب برای موبایل، مانند تبدیل تصاویر با فرمت GIF، PNG و JPEG به WebP در مرورگرهایی که از WebP پشتیبانی می کنند.
    • اگر درخواست شامل هدر Save-Data باشد، تصویر را به کیفیت پایین‌تری تبدیل می‌کند.
    • تولید نسخه هایی با اندازه های جایگزین و افزودن ویژگی های srcset برای پشتیبانی از تحویل تصاویر با اندازه پاسخگو.
  • از طریق یک کانال امن (HTTPS) ارائه می شود و از آخرین پروتکل های وب (SPDY، HTTP/2) استفاده می کند.
  • اسناد AMP را برای جلوگیری از حملات XSS بر اساس برچسب‌های HTML نادرست بسته شده، نظرات و موارد دیگر، ضد عفونی می‌کند.

در ایجاد تغییرات فوق، Google AMP Cache از هدر "Cache-Control: no-transform" صرف نظر می کند.

پاکسازی HTML

Google AMP Cache همه اسناد را برای عادی سازی تجزیه بازنویسی می کند. مثالها عبارتند از:

  • تمام نظرات HTML حذف می شوند.
  • نام برچسب و ویژگی با حروف کوچک است.
  • مقادیر مشخصه به طور پیوسته نقل شده و از آن خارج می شوند.
  • همه تگ ها بسته هستند، به جز عناصر خالی HTML5.
  • فضای خالی داخل تگ ها حذف می شود.
  • متن فرار کرده است.
  • کاراکترهای متن کدگذاری شده با استفاده از کاراکترهای معادل UTF-8 ساده شده اند.
  • عناصری که فقط می توانند در body باشند به داخل body منتقل می شوند.
  • پیوندهای خروجی مطلق می‌شوند تا زمانی که سند از منبع Google AMP Cache به جای مبدا ناشر ارائه می‌شود، به کار خود ادامه می‌دهند.

برچسب‌های واکشی اولیه را درج کنید

Google AMP Cache تگ‌های راهنمایی پیش واکشی مختلفی را برای مرورگرها اضافه می‌کند تا به بارگیری منابع زودتر کمک کند. برای مثال، <link href='https://fonts.googleapis.com/css?family=Lato' rel='stylesheet'> به:

<link href="https://fonts.googleapis.com/css?family=Lato" rel="stylesheet">
<link href="https://fonts.gstatic.com" rel="dns-prefetch preconnect">