تخزين البيانات مؤقتًا في Swift: كيفية تسريع التطبيق 10 مرات

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

تخزين البيانات مؤقتًا في تطبيقات Swift: لماذا هو ليس مجرد مصطلح عصري

\n\n

هل سبق لك أن انتظرت حتى يقوم التطبيق بتحميل نفس الصورة للمرة العاشرة؟ أو شاهدت قائمة الأخبار وهي "تفكر" لمدة ثلاث ثوانٍ في كل مرة تفتحها؟ إذا كانت الإجابة بنعم — فقد واجهت مشكلة يحلها بشكل رائع تخزين البيانات مؤقتًا في Swift. إنها ليست مجرد "حفظ ثم عرض". إنها فلسفة كاملة للسرعة تحول التطبيق "البطيء" إلى مقاتلة نفاثة.

\n\n

في هذه المقالة، سنشرح كل شيء: من NSCache البسيط إلى الحلول الصناعية باستخدام CoreData وFileManager. ستتعلم كيف يغير التخزين المؤقت للبيانات في Swift تجربة المستخدم ولماذا بدونه يكون تطبيق iOS الحديث مثل سيارة بدون عجلات. هيا بنا!

\n\n

ما هو التخزين المؤقت ولماذا هو حاسم لنظام iOS؟

\n\n

تخيل أن تطبيقك هو مكتبة. بدون تخزين مؤقت، في كل مرة يطلب فيها القارئ كتابًا، يركض أمين المكتبة إلى المخزن، ويجده، ويحضره — وهكذا في كل مرة. مع التخزين المؤقت، تكون الكتب الأكثر شعبية على طاولة بجانب المدخل. الفرق بالثواني، وفي عالم تطبيقات الجوال، الثواني تحدد المصير: 53% من المستخدمين يغلقون التطبيق إذا استغرق تحميله أكثر من 3 ثوانٍ.

\n\n

تخزين البيانات مؤقتًا في Swift هو آلية للتخزين المؤقت للبيانات المستخدمة بشكل متكرر في وصول سريع (ذاكرة الوصول العشوائي أو التخزين المحلي). في تطوير iOS، هذا مهم بشكل خاص بسبب قيود الشبكة والبطارية وحجم البيانات. التخزين المؤقت الصحيح هو:

\n
    \n
  • تحميل فوري للمحتوى (الأخبار، الصور، الملفات الشخصية)
  • \n
  • العمل دون اتصال (البيانات موجودة بالفعل على الجهاز)
  • \n
  • توفير البطارية (طلبات شبكة أقل)
  • \n
  • تقليل الحمل على الخادم
  • \n
\n\n

NSCache — صديقك الأول في عالم التخزين المؤقت في Swift

\n\n

أبسط وأكثر طريقة أنيقة لتخزين البيانات مؤقتًا في Swift هي NSCache. إنها فئة مدمجة من Apple تعمل مثل القاموس، ولكن بذكاء: فهي تحذف الكائنات تلقائيًا عند نقص الذاكرة. مثالية لتخزين الصور مؤقتًا، واستجابات JSON، أو أي بيانات صغيرة ولكنها مطلوبة بشكل متكرر.

\n\n

دعنا نرى كيف يبدو ذلك في الكود:

\n\n
import Foundation\n\nclass ImageCacheManager {\n    static let shared = ImageCacheManager()\n    private let cache = NSCache<NSString, UIImage>()\n    \n    // إعداد الحدود\n    private init() {\n        cache.countLimit = 100 // الحد الأقصى 100 صورة\n        cache.totalCostLimit = 50 * 1024 * 1024 // 50 ميجابايت\n    }\n    \n    func getImage(forKey key: String) -> UIImage? {\n        return cache.object(forKey: key as NSString)\n    }\n    \n    func setImage(_ image: UIImage, forKey key: String) {\n        cache.setObject(image, forKey: key as NSString)\n    }\n    \n    func removeImage(forKey key: String) {\n        cache.removeObject(forKey: key as NSString)\n    }\n    \n    func clearCache() {\n        cache.removeAllObjects()\n    }\n}
\n\n

لاحظ: NSCache يقرر بنفسه متى يحذف الكائنات. أنت فقط تحدد الحدود (countLimit وtotalCostLimit). هذا يجعله مثاليًا لتخزين البيانات مؤقتًا في Swift عندما تكون السرعة مهمة، وليس الحفظ المضمون.

\n\n

URLCache — تخزين مؤقت لطلبات الشبكة بدون ألم

\n\n

إذا كان تطبيقك يتصل بالشبكة بشكل متكرر (API، صور، ملفات)، فإن URLCache هو ما وصفه الطبيب. يقوم تلقائيًا بتخزين استجابات الخادم مؤقتًا، ولن تلاحظ حتى كيف يعمل. فقط قم بإعداده مرة واحدة:

\n\n
import Foundation\n\nclass NetworkCacheConfigurator {\n    static func setupURLCache() {\n        let memoryCapacity = 50 * 1024 * 1024 // 50 ميجابايت في الذاكرة\n        let diskCapacity = 200 * 1024 * 1024  // 200 ميجابايت على القرص\n        let cache = URLCache(memoryCapacity: memoryCapacity, \n                             diskCapacity: diskCapacity, \n                

المدونات

توصيات الكتب