نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی. پرتال اطلاعاتی
  • خانه
  • اخبار
  • ذخیره درایوهای خارجی[. حافظه کش چیست؟ کش برای اندروید چیست

ذخیره درایوهای خارجی[. حافظه کش چیست؟ کش برای اندروید چیست

ذخیره سازی- این یکی از روش های بهینه سازی است برنامه های کاربردی وب. در هر برنامه ای عملیات کند وجود دارد ( پرس و جوهای SQLیا درخواست هایی به API های خارجی)، که نتایج آن را می توان برای مدتی ذخیره کرد. این به شما امکان می دهد چنین عملیات کمتری را انجام دهید و داده های از پیش ذخیره شده را به اکثر کاربران نشان دهید.

محبوب ترین فناوری کش برای برنامه های کاربردی وب Memcache است.

چه زمانی باید حافظه پنهان شود

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

  • از کلاس ها یا توابع برای کار با داده ها استفاده کنید. از انتخاب های مکرر SQL در برنامه اصلی استفاده نکنید.
  • از wrapper ها برای کار با API های خارجی استفاده کنید.

چه چیزی را کش کنیم؟

شما باید داده‌هایی را که به آرامی تولید می‌شوند و اغلب درخواست می‌شوند، کش کنید. در عمل معمولاً این است:

  • نتایج درخواست ها به خدمات خارجی (RSS، SOAP، REST و غیره).
  • نتایج نمونه های کند از پایگاه داده.
  • تولید شده است بلوک های htmlیا کل صفحات

ذخیره انتخاب های پایگاه داده

پرس و جوهای پایگاه داده رایج ترین نمونه هستند. پیاده سازی بر اساس Memcache بسیار ساده است:

!$list = memcache_get("کاربران_آنلاین")) ( $sql = "SELECT * FROM users WHERE last_visit > UNIX_TIMESTAMP() - 60*10"؛ $q = mysql_query($sql)؛ در حالی که ($row = mysql_fetch_assoc($q)) $list = ردیف $; memcache_set("کاربران_آنلاین"، لیست $، 60*60);) لیست $ را برگرداند. ) $list = get_online_users(); ...

# درخواست دریافت کاربران به مدت 1 ساعت در کش ذخیره می شود

به روز رسانی داده ها

اگر داده‌هایی را ذخیره می‌کنید که ممکن است به‌روزرسانی شوند، پس از هر به‌روزرسانی باید کش را پاک کنید:

memcache_delete("user" . $id); }

ذخیره فهرست

فرض کنید داده‌های هر کاربر، مانند مثال، و همچنین فهرست‌های آن‌ها (مثلاً فهرستی از کاربران آنلاین) را در حافظه پنهان ذخیره می‌کنید. هنگام به روز رسانی داده های کاربر، داده ها را فقط برای کاربر مشخص شده از حافظه پنهان حذف می کنید. اما ممکن است داده های او در لیست کاربران آنلاین که در حافظه پنهان نیز هستند نیز وجود داشته باشد. بازنشانی لیست ها هر بار که داده های هر کاربر به روز می شود کارآمد نیست. بنابراین معمولاً از این روش استفاده می شود:

  1. آنها لیست هایی را ذخیره می کنند که فقط از شناسه های کاربر تشکیل شده است.
  2. برای نمایش یک لیست، یک درخواست جداگانه برای به دست آوردن اطلاعات هر کاربر ارسال می شود.

پیاده سازی به شکل زیر است:

شناسهاز کاربران WHERE last_visit > UNIX_TIMESTAMP() - 60*10"؛ $q = mysql_query($sql)؛ در حالی که ($row = mysql_fetch_assoc($q)) $list = ردیف $["id"]; memcache_set("کاربران_آنلاین"، لیست $، 60*60); ) لیست $ را برگرداند. ) $list = get_online_users(); foreach ($list به عنوان $id) ($user = get_user($id)؛ ...)

# بیایید لیستی از شناسه های کاربری را دریافت کنیم و آخرین داده ها را برای هر یک از آنها دریافت کنیم

برای به دست آوردن داده از چندین شی به طور همزمان، می توانید از Multiget استفاده کنید.

درخواست های مکرر

برخی از داده ها ممکن است چندین بار در یک صفحه درخواست شوند، به عنوان مثال:

get_user($_SESSION["id"])["name"])?>

... پست الکترونیک:get_user($_SESSION["id"])["ایمیل"]?> ... get_user($_SESSION["id"])["nick"]?>">صفحه من...

هر تماس get_user()داده ها را از کش دریافت خواهد کرد. اگر Memcache روی یک سرور جداگانه باشد باعث ترافیک شبکه و تاخیر زیادی می شود.

برای جلوگیری از این، می توانید از یک کش اضافی در داخل خود برنامه استفاده کنید:

جهانی $app_cache; if ($app_cache["user" . $id]) $app_cache["user" را برگردانید. $id]; if (!$data = memcache_get("user" . $id)) ($sql = "SELECT * FROM users WHERE id= ". intval($id); $q = mysql_query($sql); $data = mysql_fetch_assoc( $q); memcache_set("user" . $id, $data, 60*60); $app_cache["کاربر" . $id] = $data;) $data را برگرداند. ) تابع save_user ($id, $data) ( جهانی $app_cache; mysql_query("UPDATE User SET ... WHERE id = " . intval($id)); memcache_delete("user" . $id); unset($app_cache["user" . $id]); }

در برنامه های واقعی، داشتن یک بسته بندی Memcache با یک کش اضافی منطقی است:

inner_cache)) بازگشت $this->inner_cache[$key]; $data = memcache_get($this->منبع، $key); $this->inner_cache[$key] = $data; بازگشت $data["value"]; ) مجموعه تابع استاتیک عمومی ($key, $value, $ttl) ( memcache_set($key, $value, $ttl); $this->inner_cache[$key] = $value; ) تابع استاتیک عمومی del($key) ( memcache_delete($key)؛ unset($this->inner_cache[$key]); ))

# $inner_cache حافظه پنهان اضافی را ذخیره می کند

توجهاستفاده از این روش می تواند منجر به نشت حافظه در مواردی که با حجم زیادی از داده در حافظه پنهان کار می کنید، شود. به عنوان مثال، در وظایف cron (فرض کنید که ما در حال تکرار روی همه کاربران برای ارسال یک خبرنامه هستیم). سپس بهتر است غیرفعال کردن کش داخلی را اضافه کنید:

استاتیک عمومی $inner_cache_enabled = true;تابع استاتیک عمومی get($key) (اگر ( self::$inner_cache_enabled&& array_key_exists($key, $this->inner_cache)) return $this->inner_cache[$key]; $data = memcache_get($this->منبع، $key); $this->inner_cache[$key] = $data; بازگشت $data["value"]; ) مجموعه تابع استاتیک عمومی ($key, $value, $ttl) ( memcache_set($key, $value, $ttl); if (self::$inner_cache_enabled)$this->inner_cache[$key] = $value; ) تابع استاتیک عمومی del($key) ( memcache_delete($key); unset($this->inner_cache[$key]); ) ) ... mem_cache::$inner_cache_enabled = false;

# کش داخلی را غیرفعال کنید

گرم کردن

هنگام به‌روزرسانی داده‌های سنگین، نباید حافظه پنهان را بازنشانی کنید، بلکه مستقیماً داده‌های موجود در آن را به‌روزرسانی کنید:

# عملیات برای به روز رسانی منابع خارجی $data = file_get_contents("http://rss.com/rss"); memcache_set("rss", $data, 60*60); }

این کار باعث می شود که هنگام برداشتن کلید، از بار اضافی واکشی سنگین جلوگیری شود. این تکنیک معمولاً در کارهای کرون برای به روز رسانی دوره ای نتایج نمونه های بسیار سنگین استفاده می شود.

طول عمر (TTL)

ttl (زمان زنده بودن) زمانی است که پس از آن داده ها از حافظه پنهان حذف می شوند. Memcache در چند ثانیه نصب می شود:

60*60 );

# ttl را روی ۱ ساعت تنظیم کنید

اغلب، TTL از چند دقیقه تا چند روز تنظیم می شود. از مقدار 0 (ذخیره سازی بی نهایت) استفاده نکنید، ممکن است حافظه را مسدود کند.

LRU

هر کش در صورتی که حافظه کافی نداشته باشد بر اساس اصل اخراج کار می کند. آن ها اگر Memcache می تواند حداکثر 1G حافظه استفاده کند و شما سعی می کنید کلیدها را در 2G ذخیره کنید، Memcache نیمی از این داده ها را حذف می کند. برای تعیین اینکه کدام کلیدها باید حذف شوند، از الگوریتم LRU (کمترین استفاده اخیر) استفاده می شود:

Memcache سعی می کند اول از همه آن داده هایی را که مدت ها پیش درخواست شده بودند حذف کند (یعنی موارد کمتر محبوب را حذف می کند و موارد محبوب تر را باقی می گذارد).

ذخیره جستجوهای بسیار کند

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

برای جلوگیری از این امر، استفاده از تکنیک تکراری خاص ضروری است.

عملیات اتمی

گاهی اوقات شمارنده ها (مثلاً تعداد کاربران) در حافظه پنهان ذخیره می شوند. هنگام اضافه کردن کاربران جدید، به جای تنظیم مجدد شمارنده و نمونه برداری مجدد، می توانید به سادگی مقدار کش را یک بار افزایش دهید. اما این کار از طریق اپلیکیشن قابل انجام نیست، زیرا... این منجر به از دست رفتن داده های دو پرس و جو اجرا شده به طور همزمان می شود:

Memcache از دو عملیات افزایش و کاهش اتمی پشتیبانی می کند:

# تابع شمارنده را 1 افزایش دهید memcache_decrement()شمارنده را کاهش می دهد

مهم ترین

کش در برنامه های مبتنی بر Memcache ابزار بسیار قدرتمندی است. فراموش نکنید که Memcache امنیت داده های شما را تضمین نمی کند. این بدان معنی است که نمی توان انتظار داشت که داده های ذخیره شده به مدت 60 دقیقه دقیقاً 60 دقیقه در حافظه پنهان باقی بمانند.

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

فناوری کش در ExpressionEngine از چندین سیستم و تنظیمات ذخیره اطلاعات مستقل تشکیل شده است.

ذخیره پرس و جو

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

برخی از کوئری‌ها را نمی‌توان در حافظه پنهان ذخیره کرد، زیرا سینتکس آنها با هر بار اجرا به صورت پویا تغییر می‌کند. برای مثال، درخواست نمایش بخش اصلی، همیشه تاریخ پایان یک پست را که باید منتشر شود با زمان فعلی بررسی می کند تا تعیین کند که آیا پست منقضی شده است یا خیر. این سیستم را مجبور می کند تا هر بار که صفحه بارگذاری می شود، تغییراتی در پرس و جوها ایجاد کند. بنابراین نمی توان از کش استاندارد پرس و جو برای آن استفاده کرد. (به عنوان جایگزینی که در بسیاری از موارد قابل استفاده است، نگاه کنید.)

یک سیستم کش کوئری بسته به نحوه ساخت صفحات شما، از 30% تا 90% کاهش در تعداد کلی پرس و جوها را فراهم می کند.

این ویژگی را می توان به صورت دستی از صفحه پیکربندی پایگاه داده در کنترل پنل غیرفعال کرد.

ذخیره برچسب

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

حافظه پنهان برچسب برای یک بازه زمانی تعریف شده توسط کاربر حفظ می شود. پس از سپری شدن بازه زمانی مشخص شده، کش به طور خودکار به روز می شود.

برای فعال کردن کش تگ، دو پارامتر زیر را به آن اضافه کنید هربرچسب:

حافظه پنهان = "بله" تازه سازی = "10"

توجه داشته باشید: refresh زمان بین به‌روزرسانی‌های کش را بر حسب دقیقه مشخص می‌کند.

به عنوان مثال، برای کش کردن یک برچسب به مدت 30 دقیقه، باید موارد زیر را انجام دهید:

(exp:weblog:entries cache="yes" refresh="30")

ذخیره الگو

کش قالب (یا ذخیره صفحه پویا) به شما امکان می دهد تمام قالب های خود را کش کنید و صفحات شما را بسیار سبک تر می کند. از آنجایی که ExpressionEngine برای مدیریت منابع اصلی نیاز به اجرای چندین اسکریپت و پرس و جوهای پایگاه داده دارد، نمی توانید 100٪ صفحات ثابت داشته باشید، همیشه کمی کمتر خواهد بود.

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

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

توجه داشته باشید:کش الگو جایگزین کش تگ می شود. هیچ مزیت اضافی از استفاده همزمان برچسب و الگو وجود ندارد. اگر کش صفحه فعال باشد، هیچ نوع دیگری از کش کردن فعال نیست. بنابراین، اگر می‌خواهید تگ‌های جداگانه را کش کنید، کش کردن صفحه را خاموش کنید.

کش کردن پرس و جوهای پارتیشن پویا

این تنظیم در صفحه Admin > Global Section Settings قرار دارد. این ویژگی سرعت پردازش تگ (exp:weblog:entries) را با ذخیره کردن درخواست‌هایی که معمولاً به صورت پویا اجرا می‌شوند، افزایش می‌دهد. اما این گزینه برای همه افراد مناسب نیست.

این ویژگی را فقط در صورتی فعال کنید که نهاز سوابق "آینده" یا "گذشته" استفاده کنید.

غیرفعال کردن درخواست ها

گزینه disable= در تگ (exp:weblog:entries) موجود است. این به شما امکان می دهد ویژگی های برچسبی را که برای بهبود عملکرد استفاده نمی کنید غیرفعال کنید. تگ ورودی های وبلاگ به طور پیش فرض برای واکشی حجم زیادی از اطلاعات طراحی شده است: دسته ها، فیلدهای سفارشی، داده های کاربر و غیره. بسته به نحوه استفاده از برچسب، ممکن است به برخی از این داده ها نیازی نباشد. با گزینه "غیرفعال" می توانید این ویژگی های برچسب را غیرفعال کنید تا آن را سبک تر کنید.

نحو برای پارامتر غیرفعال این است: disable="The element YOU NT TO DISABLE" . پنج عنصر وجود دارد که می توان آنها را خاموش کرد:

  • دسته بندی ها
  • دسته_فیلدها
  • فیلدهای سفارشی
  • عضو_داده
  • صفحه بندی
  • بک بک

می توانید چندین عنصر را با جدا کردن آنها مانند شکل زیر غیرفعال کنید:

Disable="categories|data_member|trackbacks"

بهترین روش این است که داده‌هایی را که از تگ خارج می‌کنید به صورت موردی بررسی کنید. اگر نوع داده ای وجود دارد که از آن استفاده نمی کنید، آن را غیرفعال کنید.

به عنوان مثال، اگر از برچسب ورودی های وبلاگ برای نمایش عناوین 10 ورودی اخیر استفاده می کنید:

(exp:weblog:entries orderby="Date" sort="desc" limit="10")
(عنوان)

(/exp:weblog:entries)

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

(exp:weblog:entries orderby="date" sort="desc" limit="10" disable="categories|custom_fields|member_data|pagination|trackbacks")
(عنوان)

(/exp:weblog:entries)

توجه داشته باشید: همچنین می توانید از پارامتر disable="category_fields" در تگ ها استفاده کنید

کش چیست؟ آیا می توان کش برنامه را در گوشی اندرویدی پاک کرد؟ بله، تو میتونی. آیا باید کش را در اندروید پاک کنم؟ ضروری و غیر ضروری.

چرا لازم و غیر ضروری است و باید چه کاری انجام دهید، با خواندن این پست تا انتها مشخص کنید، اگرچه اصل ساده است: با پاک کردن کش، حافظه بیشتری دریافت خواهید کرد، اما سرعت دسترسی به داده ها ممکن است کاهش یابد.

تعداد برنامه ها برای اکثر مالکان به طور مداوم در حال افزایش است. گاهی آنقدر بزرگ که باعث کند شدن سیستم می شود.

بنابراین، شما باید به طور دوره ای از شر آنها خلاص شوید. در نسخه های جدیدتر می توانید این کار را با یک دکمه انجام دهید.

به «تنظیمات»، سپس به تب حافظه و سپس به کش داده ها بروید. از شما پرسیده می شود که آیا می خواهید از شر تمام داده ها خلاص شوید.

این مرحله را می توان به گونه ای تنظیم کرد که به صورت دوره ای به طور خودکار تکرار شود، که به حفظ وضعیت سیستم کمک می کند.

کش چگونه کار می کند؟

آیا حافظه کش اپلیکیشن در گوشی اندرویدی نسبت به ظرفیت حافظه یک گوشی هوشمند یا تبلت نسبتا کم است؟

وظیفه آن کاهش زمان دسترسی برای پردازش داده ها و به حداقل رساندن بار روی RAM برای در دسترس قرار دادن آن برای سایر دستگاه ها است.

شکاف بین افزایش بهره وری و سرعت دسترسی به رسانه ذخیره سازی را می بندد.

استفاده از حافظه کش دو مزیت دارد: کاهش زمان دسترسی و استفاده کارآمدتر از طریق الگوریتم ذخیره سازی هوشمند داده داخلی.

کنترل کننده حافظه دنباله ای از عملیات های مکرر را تعیین می کند و در حین اجرا، آنها را رهگیری کرده و با داده های حافظه پنهان جایگزین می کند.

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

اگر کش را حذف کنید چه اتفاقی می افتد

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

به عبارت دیگر، کش یک مکان ذخیره سازی موقت است که می توان داده های پرکاربرد را برای دسترسی سریع در آن ذخیره کرد.


کش کردن دستگاه اندروید یک فناوری مبتنی بر زیر سیستم حافظه است. هدف اصلی این است که سرعت اندروید خود را برای انجام وظایف بسیار سریعتر افزایش دهید.

برای درک مفهوم اساسی ذخیره سازی، به یک مثال ساده از کار یک کتابدار نگاه کنید.

وقتی اولین مشتری برای کتاب می آید، کتابدار به انبار می رود و با کتاب به پیشخوان برمی گردد تا آن را به مشتری بدهد.

بعداً مشتری برای بازگرداندن کتاب باز می گردد. کتابدار کتاب را می گیرد، به انبار می برد، به پیشخوان برمی گردد و منتظر مشتری دیگری می ماند.

بیایید فرض کنیم که مشتری بعدی دقیقاً به همان کتاب نیاز داشت. کتابدار باید به انبار بازگردد تا دوباره کتاب را بگیرد و نزد مشتری جدید ببرد.


بر اساس این مدل، کتابدار باید مسیر کامل را برای دریافت هر کتاب طی کند. بیایید یک کش روی کتابدار بگذاریم - یک کوله پشتی به او بدهید که بتواند 10 کتاب را در آن ذخیره کند.

در این کوله پشتی، کتاب هایی را که مراجعین پس می دهند - حداکثر 10 تا - می گذارد. حالا وقتی مشتری دیگری می آید، تنها کاری که کتابدار باید انجام دهد این است که کتاب را از کوله پشتی بگیرد و به مشتری بدهد، بنابراین به مشتری خدمات داده می شود. سریعتر

تقریباً همه چیز در یک گوشی اندرویدی یکسان کار می کند. همانطور که می بینید، مقدار زیادی نیز به حجم و تمیز کردن بستگی دارد - سرعت سرویس کاهش می یابد، در مورد ما این عملکرد سیستم اندروید است.

بنابراین، نتیجه این است: شما می‌توانید حافظه پنهان را در اندروید پاک کنید، اما اینکه آیا نیاز به پاک کردن آن دارید به شما بستگی دارد. موفق باشید.

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

این نام بافر میانی است که دسترسی سریع به اطلاعاتی را که به احتمال زیاد درخواست می شود، فراهم می کند. تمام داده ها در آن موجود است. یک مزیت مهم این است که می توانید تمام اطلاعات لازم را از حافظه پنهان بسیار سریعتر از حافظه اصلی بازیابی کنید. اما یک اشکال قابل توجه وجود دارد - اندازه. داده های کش در مرورگرها، هارد دیسک ها، CPU ها، وب سرورها، سرویس های WINS و DNS استفاده می شود. اساس ساختار مجموعه رکوردها هستند. هر یک از آنها با یک عنصر یا بلوک خاص از داده مرتبط است که به عنوان یک کپی از آنچه در حافظه اصلی است عمل می کند. رکوردها دارای یک شناسه (برچسب) هستند که برای تعیین تطابق استفاده می شود. بیایید از دیدگاه کمی متفاوت نگاه کنیم: داده های حافظه پنهان در گوشی سامسونگ یا سایر سازنده ها چیست؟ آیا آنها با آنهایی که در رایانه ایجاد می شوند متفاوت هستند؟ از نقطه نظر اساسی - نه، تفاوت فقط در اندازه است.

فرآیند استفاده

هنگامی که یک کلاینت (که در بالا ذکر شد) درخواست داده می کند، اولین کاری که کامپیوتر انجام می دهد بررسی حافظه پنهان است. اگر حاوی ورودی مورد نیاز باشد، از آن استفاده می شود. در این موارد ضربه اتفاق می افتد. به صورت دوره‌ای، داده‌های کش در حافظه اصلی کپی می‌شوند. اما اگر رکورد مورد نیاز پیدا نشد، محتویات در حافظه اصلی جستجو می‌شوند. تمام اطلاعات گرفته شده به حافظه پنهان منتقل می شود تا بعداً سریعتر به آن دسترسی پیدا کنید. درصدی که پرس و جوها موفق هستند، نرخ ضربه یا نرخ ضربه نامیده می شود.

به روز رسانی داده ها

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

خط مشی ضبط

هنگامی که محتویات کش اصلاح می شود، داده های حافظه اصلی نیز به روز می شوند. تأخیر زمانی بین وارد کردن اطلاعات به خط مشی ضبط بستگی دارد. دو نوع اصلی وجود دارد:

  1. ضبط فوری هر تغییر به طور همزمان در حافظه اصلی نوشته می شود.
  2. ضبط با تاخیر یا معکوس داده ها به صورت دوره ای یا بنا به درخواست مشتری به روز می شوند. برای ردیابی اینکه آیا تغییر ایجاد شده است، از علامتی با دو حالت استفاده کنید: "کثیف" یا تغییر یافته. در صورت عدم دسترسی، دو دسترسی می‌توان به حافظه اصلی انجام داد: اولی برای نوشتن داده‌هایی که از حافظه پنهان اصلاح شده‌اند و دومی برای خواندن عنصر مورد نیاز استفاده می‌شود.

همچنین ممکن است اطلاعات موجود در بافر میانی بی ربط شوند. این زمانی اتفاق می‌افتد که داده‌های حافظه اصلی بدون انجام تنظیمات در حافظه پنهان تغییر می‌کنند. برای اطمینان از سازگاری در تمام فرآیندهای ویرایش، از پروتکل های انسجام استفاده می شود.

چالش های مدرن

با افزایش فرکانس پردازنده ها و افزایش عملکرد RAM، یک منطقه مشکل جدید ظاهر شده است - محدودیت های رابط. یک فرد آگاه چه چیزی می تواند از این متوجه شود؟ اگر فرکانس RAM کمتر از پردازنده باشد، حافظه کش بسیار مفید است. بسیاری از آنها بافر میانی خود را برای کاهش زمان دسترسی به RAM دارند که کندتر از رجیسترها است. CPUهایی که از آدرس دهی مجازی پشتیبانی می کنند اغلب دارای یک بافر ترجمه آدرس کوچک اما بسیار سریع هستند. اما در موارد دیگر، حافظه نهان چندان مفید نیست و گاهی اوقات فقط مشکلاتی را ایجاد می کند (اما این معمولاً در رایانه هایی است که توسط یک فرد غیرحرفه ای اصلاح شده است). به هر حال، در مورد اینکه داده های کش شده در حافظه یک گوشی هوشمند چیست، باید توجه داشت که به دلیل اندازه کوچک دستگاه، باید پیاده سازی های کش مینیاتوری جدیدی ایجاد شود. امروزه، برخی از تلفن ها دارای پارامترهایی مشابه پارامترهای رایانه های پیشرفته ده سال پیش هستند - و اندازه آنها چقدر تفاوت دارد!

همگام سازی داده ها بین بافرهای مختلف

  1. شامل. حافظه پنهان می تواند به هر شکلی رفتار کند.
  2. انحصاری. برای هر مورد خاص توسعه یافته است.
  3. غیر انحصاری استاندارد گسترده

سطوح حافظه پنهان

تعداد آنها معمولاً سه یا چهار است. هرچه سطح حافظه بالاتر باشد، بزرگتر و کندتر است:

  1. حافظه نهان L1. سریعترین سطح حافظه نهان اولین است. در واقع، بخشی از پردازنده است، زیرا بر روی یک تراشه قرار دارد و متعلق به بلوک های عملکردی است. معمولاً به دو نوع تقسیم می شود: کش دستورالعمل و کش داده. اکثر پردازنده های مدرن بدون این سطح کار نمی کنند. این حافظه نهان در فرکانس پردازنده کار می کند، بنابراین می توان در هر چرخه ساعت به آن دسترسی داشت.
  2. حافظه نهان L2. معمولاً همراه با قبلی قرار دارد. این یک خاطره مشترک است. برای فهمیدن مقدار آن، باید کل حجم اختصاص داده شده برای کش داده ها را بر تعداد هسته هایی که پردازنده دارد تقسیم کنید.
  3. حافظه نهان L3. کند، اما بزرگترین کش وابسته. معمولا بیش از 24 مگابایت. برای همگام سازی داده هایی که از حافظه های پنهان سطح دوم مختلف می آیند استفاده می شود.
  4. حافظه نهان L4. استفاده فقط برای پردازنده های مرکزی و سرورهای چند پردازنده ای با کارایی بالا قابل توجیه است. به صورت تراشه جداگانه فروخته می شود. اگر سوالی در مورد اینکه ذخیره داده در گوشی هوشمند سامسونگ چیست و به دنبال این سطح در آن هستید می‌پرسید، می‌توانم بگویم که ما قطعاً 5 سال عجله داشتیم.

ارتباط حافظه پنهان

این یک ویژگی اساسی است. ارتباط داده های کش برای نمایش بخش بندی منطقی ضروری است. به نوبه خود، به دلیل این واقعیت است که شمارش متوالی تمام خطوط موجود، ده‌ها چرخه ساعت را می‌گیرد و همه مزایا را نفی می‌کند. بنابراین، اتصال سخت سلول های RAM به داده های حافظه پنهان برای کاهش زمان جستجو استفاده می شود. اگر بافرهای میانی را با حجم یکسان، اما ارتباط متفاوتی با هم مقایسه کنیم، آنگاه بافرهای بزرگتر با سرعت کمتری کار می کنند، اما با کارایی خاص قابل توجهی.

نتیجه

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

احتمالاً بسیاری از کاربران رایانه و دستگاه های تلفن همراه حداقل گاهی اوقات با مفهوم "داده های کش" روبرو شده اند. این چیست، بسیاری، صادقانه بگویم، به سادگی نمی دانند. با این حال، با استفاده از نکاتی برای افزایش سرعت هر دستگاهی که دارای سیستم عامل است، مطمئناً می‌دانند که کش باید پاک شود. این تا حدی درست است، اما همه داده ها را نمی توان حذف کرد. این اتفاق می افتد که بدون آنها، برخی از برنامه های نصب شده روی دستگاه به سادگی کار نخواهند کرد.

"داده های کش" به معنای کلی به چه معناست؟

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

برای شفاف‌تر شدن موضوع، می‌توانیم مثالی از نحوه استفاده از داده‌های ذخیره شده در حافظه پنهان ارائه کنیم. مثلاً اگر کاربر از صفحه‌ای اینترنتی بازدید کند که در آن عکس‌ها را نگاه می‌کند، این چیست؟ اینها کپی های آنها به شکل مینیاتور هستند که در یک پوشه خاص روی هارد دیسک رایانه یا در حافظه داخلی یک دستگاه تلفن همراه ذخیره می شوند. هنگام ورود مجدد به صفحه، کاربر مجبور نیست منتظر بارگذاری تمام محتوا (به عنوان مثال، گرافیک، ویدئو و به طور کلی چند رسانه ای) باشد، زیرا تمام عناصر موجود در صفحه مستقیماً از دایرکتوری کش اضافه می شوند.

در تلفن؟

اما این فقط یک دلیل کلی بود. با اینترنت همه چیز روشن است. اکنون بیایید ببینیم که داده های برنامه های ذخیره شده در یک تلفن (به معنای اپلت های غیر از مرورگرهای وب) چیست.

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

نمونه های استفاده از کش

بیایید به برخی از انواع داده های اساسی که می توان و نمی توان آنها را حذف کرد نگاهی بیندازیم. در حالت اول، این امر برای هر برنامه‌ای که روی سیستم نصب شده است اعمال می‌شود، مگر اینکه عملکرد کامل آنها مستلزم استفاده از حافظه پنهان اضافی متفاوت با برنامه سیستم باشد.

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

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

همین امر در مورد برخی از برنامه های موسیقی برای دستگاه های تلفن همراه نیز صدق می کند. بیایید FL Studio Mobile را به عنوان مثال در نظر بگیریم. حتی نصب کننده خود برنامه همه چیزهایی که برای اجرای ترتیب سنج نیاز دارید را ندارد. به عبارت دیگر فقط پوسته اصلی نرم افزار نصب شده است.

اطلاعات کش شده اپلیکیشن در گوشی در رابطه با این نوع برنامه ها چیست؟ اینها جعبه‌های ابزار، افکت‌ها، تنظیمات تعامل با سایر اپلت‌ها، پارامترهای پشتیبانی از فرمت‌های صوتی خاص و غیره هستند. به عنوان یک قاعده، چنین حافظه پنهانی در یک پوشه obb ویژه که در درایو داخلی قرار دارد ذخیره می‌شود، مگر اینکه مشخص شود که می توان آن را روی یک حافظه کارت قابل جابجایی قرار داد. چنین اطلاعاتی فضای نسبتاً زیادی را اشغال می کند، اما بدون آن برنامه کاربردی غیرعملکردی خواهد بود (ارزش فقط یک پوسته نرم افزاری که هیچ ابزار یا اثری ندارد؟).

پاک کردن حافظه پنهان روی یک دستگاه تلفن همراه با استفاده از ابزارهای استاندارد

داده های حافظه پنهان در تلفن چیست، ما کمی آن را فهمیدیم. اکنون بیایید به مسائل مربوط به پاک کردن چنین محتوایی نگاه کنیم، زیرا باعث کاهش سرعت سیستم می شود.

هر دستگاه اندرویدی دارای دو ابزار پاکسازی کش است. اولی برای حذف داده ها برای همه برنامه ها طراحی شده است، دومی به شما امکان می دهد حافظه پنهان را فقط برای یک اپلت جداگانه پاک کنید.

اگر می خواهید همه چیز را حذف کنید، از منوی تنظیمات که در آن بخش حافظه انتخاب شده است استفاده کنید. هنگامی که روی خطی از داده‌های کش ضربه می‌زنید، سیستم هشداری مبنی بر حذف تمام اطلاعات صادر می‌کند. ما فقط موافقیم و منتظریم تا تمیز کردن کامل شود.

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

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

استفاده از بهینه سازها و پاک کننده ها

امروزه بسیاری از این گونه برنامه ها به قیاس با سیستم های کامپیوتری ثابت ساخته شده اند. در همان مخازن Play Market یا AppStore می توانید نه ده ها، بلکه صدها را پیدا کنید.

داده‌های ذخیره‌شده (این که قبلاً مشخص است) را می‌توان برای کل سیستم و برای هر اپلت انتخابی حذف کرد.

در مورد خود برنامه ها، ترجیحاً برنامه ها و اپلت های با تمرکز محدود هستند که برای بهینه سازی عمومی طراحی شده اند. اولین ها توسط برنامه هایی مانند App Cache Cleaner، Auto Cahe Cleaner و غیره نشان داده می شوند.

در میان بهینه سازها، می توان به ویژه نسخه های موبایل CCleaner، All-in-one Toolbox و بسیاری دیگر را برجسته کرد. اینکه دقیقاً چه چیزی باید استفاده شود یک موضوع ترجیح شخصی است، زیرا هر یک از این برنامه ها مزایا و معایب خاص خود را دارد.

به جای کل

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

بهترین مقالات در این زمینه