استفاده از حافظه پنهان برنامه

معرفی

HTML5 مکانیزم حافظه پنهان برنامه (application caching mechanism) را ارائه کرده است که اجازه می دهد برنامه های تحت وب حتی به صورت آفلاین اجرا شوند. توسعه دهندگان می توانند از رابط کاربری حافظه پنهان برنامه (AppCache) برای مشخص کردن منابعی که مرورگر باید کش کرده تا در اختیار کاربران آفلاین قرار دهد، استفاده کنند. برنامه هایی که کش را لود می کنند و حتی اگر کاربران بر روی دکمه refresh وقتی آفلاین است کلیک کنند به درستی کار می کنند.

با استفاده از حافظه پنهان ، برنامه دارای مزایای زیر می شود:

Offline browsing : کاربران می توانند حتی زمانی که آفلاین هستند در یک سایت حرکت کنند .
Speed : منابع cached لوکال هستند و بنابراین سریعتر بارگذاری می شوند.
Reduced server load : مرورگر فقط منابعی را که از سرور تغییر کرده اند را دانلود می کند.

How the application cache works – چگونه حافظه پنهان برنامه کار می کند

فعال کردن حافظه پنهان برنامه

برای فعال کردن حافظه پنهان برنامه ، شما باید ویژگی manifest را در عنصر HTML در صفحات برنامه خود اضافه کنید، همانطور که در مثال زیر نشان داده شده است:

ویژگی manifest اشاره به یک فایل cache manifest دارد که یک فایل متنی است که منابعی (فایل ها) را که مرورگر باید برای برنامه شما ذخیره کند را لیست می کند. باید ویژگی manifest را در هر صفحه از برنامه تان که میخواهید کش شود وارد کنید. مرورگر صفحاتی را که حاوی ویژگی manifest نیستند را کش نمی کند، مگر اینکه چنین صفحاتی به صراحت در فایل خود manifest لیست شده باشند. شما لازم نیست تمام صفحاتی را که میخواهید کش شود را در فایل manifest ذخیره کنید، مرورگر به طور پیش فرض هر صفحه ای را که کاربر بازدید میکند و دارای ویژگی manifest است را به حافظه پنهان برنامه اضافه می کند.

بعضی از مرورگرها (مانند فایرفاکس) نوار notification را زمانی که کاربر برای اولین بار ، برنامه ای را که از حافظه پنهان استفاده می کند را لود می کند، نشان می دهند. نوار notification یک پیام را نشان می دهد مانند:

این وبسایت (www.example.com) درخواست ذخیره اطلاعات بر روی کامپیوتر برای استفاده آفلاین را دارد.

[اجازه] [هرگز برای این سایت] [اکنون]

اصطلاح برنامه های آفلاین “offline applications” گاهی اوقات به طور خاص به برنامه هایی اشاره دارد که کاربر مجاز به استفاده از قابلیت های آفلاین است.

 

بارگزاری داکیومنت – Loading documents

استفاده از حافظه پنهان برنامه، فرآیند طبیعی بارگذاری یک document را تغییر می دهد:
اگر  حافظه پنهان برنامه وجود داشته باشد، مرورگر document و منابع وابسته آن را مستقیما از حافظه پنهان بدون دسترسی به شبکه بارگذاری می کند. این کار زمان بارگذاری document را افزایش می دهد. مرورگر سپس بررسی می کند که آیا حافظه کش manifest در سرور به روز شده است یا نه. اگر حافظه کش manifest در سرور به روز شده باشد، مرورگر نسخه جدیدی از مانیفست و منابع موجود در فایل manifest را دانلود می کند. این کار در پس زمینه انجام می شود و بر عملکرد تاثیر قابل توجهی نمی گذارد.
فرآیند بارگزاری document ها و به روزرسانی حافظه پنهان برنامه با جزئیات بیشتری در ادامه مشخص شده است:
  1. هنگامی که مرورگر یک document را که دارای ویژگی manifest است بازدید می کند، اگر هیچ کش برنامه ای وجود نداشته باشد، مرورگر document را بارگذاری می کند و سپس تمام موجودیت های فایل manifest را فچ می کند،و اولین نسخه از حافظه پنهان برنامه را ایجاد می کند.
  2. بازدی های بعدی از آن document باعث می شود مرورگر document و سایر مولفه های مشخص شده در فایل manifest را از حافظه پنهان برنامه (نه از سرور) بارگذاری کند. علاوه بر این، مرورگر یک رویداد checking را به شیء window.applicationCache ارسال می کند و فایل manifest را با دنبال کردن قوانین ذخیره سازی HTTP مناسب فچ می کند.
  3. اگر نسخه کپی شده فایل manifest  فعلی به روز شده باشد، مرورگر یک رویداد آپدیت نشده را به شیء applicationCache ارسال می کند و روند آپدیت کامل می شود. توجه داشته باشید که اگر شما هر گونه منبع ذخیره شده در سرور را تغییر دهید، باید خود فایل manifest  را تغییر دهید.
  4. اگر فایل manifest تغییر داده شود، تمام فایل های که در manifest موجود است – همچنین فایل هایی که با فراخوانی applicationCache.add() به برنامه اضافه شده اند – در حافظه temporary(موقت) فچ می شوند. مرورگر یک رویداد progress را به شیء applicationCache ارسال می کند. اگر خطایی رخ دهد، مرورگر یک رویداد خطا را ارسال می کند، و به روز رسانی متوقف می شود.
  5. هنگامی که همه فایل ها با موفقیت بازیابی شوند، به طور خودکار به کش آفلاین واقعی منتقل می شوند و یک رویداد cached به شیء applicationCache ارسال می شود. از آنجا یکه document قبلا در حافظه پنهان مرورگر بارگذاری شده است، document به روز شده  تا زمانی که document مجددا بارگزاری نشده باشد، رندر نخواهد شد. (به صورت دستی یا برنامه ای).

فایل cache manifest

ارجاع دهی به یک فایل cache manifest

ویژگی manifest در یک برنامه وب می تواند مسیر نسبی یک فایل cache manifest یا یک URL مطلق را مشخص کند. (آدرسهای مطلق باید از همان مبداء برنامه باشند). یک فایل cache manifest می تواند هر پسوند فایلی داشته باشد، اما باید بتواند با نوع MIME type text / cache manifest به کار گرفته شود.

توجه : در سرورهای آپاچی ، نوع MIME برای فایل های manifest می تواند با اضافه کردن AddType text/cache-manifest .appcache به فایل .htaccess درون مسیر اصلی، یا مسیر اصلی مشابه با برنامه تنظیم شود.

 

موجودیت های فایل cache manifest

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

 

مثال اول : یک فایل cache manifest ساده

مثال زیر یک یک نمونه ساده از فایل cache manifest برای سایت www.example.com می باشد:

یک فایل cache manifest میتواند شامل سه بخش باشد (CACHE، NETWORK،  FALLBACK، که در ادامه بحث شده است). در مثال بالا، هیچ بخش header ی وجود ندارد، بنابراین فرض می شود تمام خطوط داده در بخش  CACHE قرار گرفته اند، به این معنی که مرورگر باید تمام منابع لیست شده در حافظه برنامه را ذخیره کند. منابع را می توان با استفاده از URL های مطلق یا نسبی (به عنوان مثال index.html) مشخص کرد.
یادداشت “V1” در مثال بالا به دلیل خوبی آورده شده است مرورگرها تنها زمانی که فایل manifest بایت به بایت تغییر می کند، کش برنامه را به روز رسانی می کند، . اگر یک منبع ذخیره شده را تغییر دهید (به عنوان مثال، شما عکس header.png را با محتویات جدید به روز می کنید)، باید محتوای پرونده مانیفست را تغییر دهید تا مرورگر ها بدانند که باید کش را بازخوانی کنند. شما می توانید هر گونه تغییری را که می خواهید در فایل manifest ایجاد کنید، اما اصلاح کردن شماره ورژن به عنوان بهترین کار توصیه می شود.
 مهم:  خود manifest را در فایل cache manifest مشخص نکنید، چرا که در غیر این صورت  اطلاع رسانی به مرورگر برای در دسترس بودم manifest جدید  غیر ممکن خواهد بود.
بخش های فایل cache manifest – ا CACHE – NETWORK – FALLBACK
  • CACHE : این بخش پیش فرض برای ورودی ها و موجودیت های، درون فایل cache manifest است. فایل هایی که در قسمت CACHE: section header (یا بلافاصله پس از خط CACHE MANIFEST) قرار دارند به طور صریح پس از اینکه برای اولین بار  دانلود شدند ذخیره می شوند.
  • NETWORK : فایل هایی که در قسمت NETWORK: section header قرار دارند، منابع white-listed هستند که نیاز به اتصال به سرور دارند.  تمام درخواست ها به چنین منابعی از حافظه عبور می کند، حتی اگر کاربر آفلاین باشد. کاراکتر * می تواند یک بار استفاده شود. بیشتر سایت ها نیاز به * دارند.
  • FALLBACK : بخش FALLBACK پیج های برگشتی را که مرورگر باید زمانی که  منابع از دسترس خارج هستند استفاده کند تعیین می کند. هر ورودی در این بخش دو URI را ذکر می کند: اول، resource است، دوم، fallback است. هر دو URI باید نسبی باشند و از همان منبع فایل manifest  باشند.

 

مثال ۲ : یک فایل cache manifest کاملتر

مثال زیر یک یک نمونه کاملتر از فایل cache manifest برای سایت www.example.com می باشد:

این مثال از بخش CALLBACK و NETWORK برای مشخص کردن اینکه صفحه network.html باید همیشه از شبکه بازیابی شود استفاده می کند و صفحه fallback.html باید به عنوان منبع fallback در نظر گرفته شود ( به عنوان مثال در مواردی که اتصال به شبکه پایدار نیست)

 

برای مطالعه بیشتر در مورد فایل های manifest  می توانید به  سایت www.developer.mozilla.org مراجعه کنید.

 

Using the application cache

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *