
معرفی
HTML5 مکانیزم حافظه پنهان برنامه (application caching mechanism) را ارائه کرده است که اجازه می دهد برنامه های تحت وب حتی به صورت آفلاین اجرا شوند. توسعه دهندگان می توانند از رابط کاربری حافظه پنهان برنامه (AppCache) برای مشخص کردن منابعی که مرورگر باید کش کرده تا در اختیار کاربران آفلاین قرار دهد، استفاده کنند. برنامه هایی که کش را لود می کنند و حتی اگر کاربران بر روی دکمه refresh وقتی آفلاین است کلیک کنند به درستی کار می کنند.
با استفاده از حافظه پنهان ، برنامه دارای مزایای زیر می شود:
Offline browsing : کاربران می توانند حتی زمانی که آفلاین هستند در یک سایت حرکت کنند .
Speed : منابع cached لوکال هستند و بنابراین سریعتر بارگذاری می شوند.
Reduced server load : مرورگر فقط منابعی را که از سرور تغییر کرده اند را دانلود می کند.
How the application cache works – چگونه حافظه پنهان برنامه کار می کند
فعال کردن حافظه پنهان برنامه
برای فعال کردن حافظه پنهان برنامه ، شما باید ویژگی manifest را در عنصر HTML در صفحات برنامه خود اضافه کنید، همانطور که در مثال زیر نشان داده شده است:
<html manifest=”example.appcache”>
…
</html>
ویژگی manifest اشاره به یک فایل cache manifest دارد که یک فایل متنی است که منابعی (فایل ها) را که مرورگر باید برای برنامه شما ذخیره کند را لیست می کند. باید ویژگی manifest را در هر صفحه از برنامه تان که میخواهید کش شود وارد کنید. مرورگر صفحاتی را که حاوی ویژگی manifest نیستند را کش نمی کند، مگر اینکه چنین صفحاتی به صراحت در فایل خود manifest لیست شده باشند. شما لازم نیست تمام صفحاتی را که میخواهید کش شود را در فایل manifest ذخیره کنید، مرورگر به طور پیش فرض هر صفحه ای را که کاربر بازدید میکند و دارای ویژگی manifest است را به حافظه پنهان برنامه اضافه می کند.
بعضی از مرورگرها (مانند فایرفاکس) نوار notification را زمانی که کاربر برای اولین بار ، برنامه ای را که از حافظه پنهان استفاده می کند را لود می کند، نشان می دهند. نوار notification یک پیام را نشان می دهد مانند:
این وبسایت (www.example.com) درخواست ذخیره اطلاعات بر روی کامپیوتر برای استفاده آفلاین را دارد.
[اجازه] [هرگز برای این سایت] [اکنون]
اصطلاح برنامه های آفلاین “offline applications” گاهی اوقات به طور خاص به برنامه هایی اشاره دارد که کاربر مجاز به استفاده از قابلیت های آفلاین است.
بارگزاری داکیومنت – Loading documents
- هنگامی که مرورگر یک document را که دارای ویژگی manifest است بازدید می کند، اگر هیچ کش برنامه ای وجود نداشته باشد، مرورگر document را بارگذاری می کند و سپس تمام موجودیت های فایل manifest را فچ می کند،و اولین نسخه از حافظه پنهان برنامه را ایجاد می کند.
- بازدی های بعدی از آن document باعث می شود مرورگر document و سایر مولفه های مشخص شده در فایل manifest را از حافظه پنهان برنامه (نه از سرور) بارگذاری کند. علاوه بر این، مرورگر یک رویداد checking را به شیء window.applicationCache ارسال می کند و فایل manifest را با دنبال کردن قوانین ذخیره سازی HTTP مناسب فچ می کند.
- اگر نسخه کپی شده فایل manifest فعلی به روز شده باشد، مرورگر یک رویداد آپدیت نشده را به شیء applicationCache ارسال می کند و روند آپدیت کامل می شود. توجه داشته باشید که اگر شما هر گونه منبع ذخیره شده در سرور را تغییر دهید، باید خود فایل manifest را تغییر دهید.
- اگر فایل manifest تغییر داده شود، تمام فایل های که در manifest موجود است – همچنین فایل هایی که با فراخوانی applicationCache.add() به برنامه اضافه شده اند – در حافظه temporary(موقت) فچ می شوند. مرورگر یک رویداد progress را به شیء applicationCache ارسال می کند. اگر خطایی رخ دهد، مرورگر یک رویداد خطا را ارسال می کند، و به روز رسانی متوقف می شود.
- هنگامی که همه فایل ها با موفقیت بازیابی شوند، به طور خودکار به کش آفلاین واقعی منتقل می شوند و یک رویداد 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
# v1 – 2011-08-13
# This is a comment.
http://www.example.com/index.html
http://www.example.com/index.html
http://www.example.com/blah/blah
- 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 می باشد:
CACHE MANIFEST
# v1 2011-08-14
# This is another comment
index.html
cache.html
style.css
image1.png
# Use from network if available
NETWORK:
network.html
# Fallback content
FALLBACK:
. fallback.html
این مثال از بخش CALLBACK و NETWORK برای مشخص کردن اینکه صفحه network.html باید همیشه از شبکه بازیابی شود استفاده می کند و صفحه fallback.html باید به عنوان منبع fallback در نظر گرفته شود ( به عنوان مثال در مواردی که اتصال به شبکه پایدار نیست)