Catch up on everthing we announced at this year's Firebase Summit. Learn more

رفتار حافظه نهان را مدیریت کنید

میزبانی Firebase از یک CDN قدرتمند جهانی برای ایجاد سریعترین زمان ممکن در سایت شما استفاده می کند.

برای صفحات استاتیک درخواست شده است به طور خودکار در CDN ذخیره سازی. اگر محتوای سایت خود را مجدداً به کار گیرید ، میزبانی Firebase به طور خودکار تمام مطالب استاتیک ذخیره شده شما را در سراسر CDN تا درخواست بعدی پاک می کند.

با این حال ، از آنجا که عملکردهای Cloud و خدمات Cloud Run محتوا را به صورت پویا تولید می کنند ، محتوا برای یک URL مشخص می تواند بر اساس مواردی مانند ورودی کاربر یا هویت کاربر متفاوت باشد. به حساب کاربری برای این، درخواست ها که توسط کد باطن به کار گرفته بر روی CDN به طور پیش فرض پنهانی نکرده است.

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

همچنین می توانید هزینه های اجرای عملکرد را به طور بالقوه کاهش دهید زیرا محتوا از CDN ارائه می شود تا از طریق یک عملکرد فعال شده. اطلاعات بیشتر در مورد بهینه سازی اجرای تابع و خدمات در توابع ابر و ابر اجرا اسناد و مدارک.

اطلاعات بیشتر در مورد رفتار ذخیره در گوگل اسناد توسعه وب .

Cache-Control را تنظیم کنید

ابزار اصلی که استفاده می کنید برای مدیریت کش برای محتوای پویا است Cache-Control هدر. با پیکربندی این سرصفحه ، می توانید مدت زمان ذخیره شدن محتوای خود را هم به مرورگر و هم به CDN متصل کنید. در تابع خود، به شما در تنظیم Cache-Control مانند:

res.set('Cache-Control', 'public, max-age=300, s-maxage=600');

در این عنوان سرصفحه ، دستورالعمل ها سه چیز را انجام می دهند:

  • public - علائم کش به عنوان public . این بدان معناست که هر دو مرورگر و سرور میانی (به معنی CDN برای فایربیس میزبانی وب) می توانید محتوای کش.

  • max-age - می گوید مرورگر و CDN چگونه بسیاری از ثانیه که آنها می توانند محتوای کش. هنگامی که زمان تنظیم شده به پایان می رسد ، مرورگر و CDN باید محتوا را با سرور مبدأ اعتبار مجدد کنند. در هدر مثال، ما در حال اجازه می دهد مرورگر و CDN به کش محتوا برای پنج دقیقه (نگاه کنید به s-maxage زیر را برای کنترل های خاص برای ذخیره CDN).

  • s-maxage - لغو می max-age راهنما برای CDN-ذخیره تنها؛ به CDN می گوید چند ثانیه می تواند محتوا را ذخیره کند. هنگامی که زمان تنظیم شده به پایان می رسد ، CDN باید محتوا را با سرور مبدأ اعتبار مجدد کند. در هدر مثال، ما در حال فارغ از تنظیم برای max-age برای تنها CDN و اجازه می دهد CDN به کش محتوا برای ده دقیقه.

برای max-age و s-maxage ، ارزش های خود به طولانی ترین مقدار از زمان مجموعه ای که شما راحت هستید کاربران دریافت محتوای بیات. اگر صفحه ای هر چند ثانیه تغییر می کند ، از مقدار زمانی کمی استفاده کنید. با این حال ، انواع دیگر محتوا را می توان ساعت ها ، روزها یا حتی ماه ها با خیال راحت ذخیره کرد.

شما می توانید اطلاعات بیشتر در مورد یاد Cache-Control هدر را در برنامه نویسی Mozilla شبکه و در گوگل اسناد توسعه وب .

چه زمانی محتوای ذخیره شده در حافظه پهن ارائه می شود؟

مرورگر و CDN محتوای شما را بر اساس موارد زیر ذخیره می کنند:

  • نام میزبان
  • مسیر
  • رشته پرس و جو
  • محتوای هدر درخواست مشخص شده در Vary هدر

هدرهای مختلف

Vary هدر مشخص می کند که درخواست هدر باید مورد استفاده برای ارائه پاسخ مناسب (چه محتوای cache معتبر است یا اگر محتوای باید با سرور مبدا دوباره تأیید).

فایربیس میزبانی به طور خودکار مجموعه مناسب Vary هدر در پاسخ شما برای موقعیت های متداول. بسیاری از اوقات، شما را به نگرانی لازم نیست در مورد Vary هدر. با این حال ، در برخی موارد استفاده پیشرفته ، ممکن است هدرهای دیگری نیز داشته باشید که برای تأثیر بر حافظه پنهان به آنها نیاز دارید. وقتی که این مورد، شما می توانید مجموعه ای از Vary هدر در پاسخ شما. مثلا:

res.set('Vary', 'Accept-Encoding, X-My-Custom-Header');

در این مورد، ارزش Vary هدر است:

vary: X-My-Custom-Header, x-fh-requested-host, accept-encoding, cookie, authorization

با این تنظیمات، دو درخواست غیر این صورت یکسان با مختلف X-My-Custom-Header هدر به طور جداگانه ذخیره سازی. توجه داشته باشید که میزبانی می افزاید Cookie و Authorization به Vary هدر به طور پیش فرض وقتی که یک درخواست برای محتوای پویا ساخته شده است. این تضمین می کند که هر سرصفحه مجوز جلسه یا کوکی که استفاده می کنید بخشی از کلید حافظه پنهان است ، که از نشت تصادفی محتوا جلوگیری می کند.

همچنین توجه داشته باشید:

  • فقط GET و HEAD درخواست را می توان ذخیره سازی. درخواست های HTTPS با استفاده از روش های دیگر هرگز ذخیره نمی شوند.

  • مراقب باشید در هنگام اضافه کردن تنظیمات به Vary هدر. هرچه تنظیمات بیشتری اضافه کنید ، احتمال اینکه CDN بتواند محتوای ذخیره شده را ارائه دهد کمتر است. همچنین به یاد داشته باشید که Vary است هدر درخواست، نه هدرهای است.

استفاده از کوکی ها

هنگام استفاده از Firebase Hosting همراه با عملکردهای Cloud یا Cloud Run ، معمولاً کوکی ها از درخواست های ورودی محروم می شوند. این لازم است برای کارآمد CDN اجازه می دهد رفتار کش . فقط مخصوص به نام __session کوکی مجاز به عبور و رسیدن به اجرای برنامه خود را.

وقتی حال حاضر، __session کوکی به طور خودکار ساخته شده بخشی از کلید کش، به این معنی است که آن را غیر ممکن است برای دو کاربر با کوکی ها مختلف برای دریافت دیگر پاسخ ذخیره سازی. تنها با استفاده از __session کوکی اگر برنامه شما از محتوای مختلف بسته به مجوز کاربر.