Disk Cache: এটি কী, iOS ডিস্ক ক্যাশ এবং অপারেটিং নীতি

লেখক: IT Sectr প্রকাশিত: 2026-07-11 পড়ার সময়: 7 মিনিট

Disk Cache হল ডিভাইসের ডিস্কে ডেটা অস্থায়ীভাবে সংরক্ষণের একটি প্রক্রিয়া, যা iOS অ্যাপ্লিকেশনগুলিকে পূর্বে লোড করা সংবাদে বারবার প্রবেশ ত্বরান্বিত করতে সহায়তা করে। Apple Developer Documentation, 2024 অনুযায়ী, Disk Cache নেটওয়ার্ক ব্যবহার হ্রাস করে, ব্যাটারির লোড হ্রাস করে এবং অফলাইন মোডে অ্যাপ্লিকেশন চালু করা সমর্থ করে। iOS বেশ কিছু নির্মিত ক্যাশিং প্রক্রিয়া প্রদান করে: নেটওয়ার্ক অনুরোধের জন্য URLCache, RAM-এর জন্য NSCache এবং Caches ডিরেক্টরির মাধ্যমে কাস্টম বাস্তবায়ন।

মূখ্য বিষয়সমূহ

  • Disk Cache — দ্রুত বারবার প্রবেশ এবং ট্রাফিক কমানোর জন্য ডিস্কে ডেটা সংরক্ষণ
  • URLCache — iOS-এ HTTP অনুরোধের জন্য নির্মিত ক্যাশিং প্রক্রিয়া
  • Caches ডিরেক্টরি — অস্থায়ী অ্যাপ্লিকেশন ডেটার জন্য একটি উৎসর্গীকৃত Sandbox ডিরেক্টরি
  • ক্যাশ ইনভ্যালিডেশন ডেটা সতেজতার জন্য অত্যন্ত গুরুত্বপূর্ণ — সময়-ভিত্তিক, ইভেন্ট-চালিত এবং ভার্সন-ভিত্তিক কৌশল
  • সিস্টেম ক্যাশ পরিষ্কার করতে পারে যখন ডিস্ক স্থান কম হয় — ক্যাশে অপরিবর্তনীয় ডেটা থাকা উচিত নয়

iOS-এ Disk Cache কি?

Disk Cache হল একটি প্রযুক্তি যা ডিভাইসের স্থায়ী সংরক্ষণ (ফ্ল্যাশ মেমরি) এ অস্থায়ীভাবে ডেটা সংরক্ষণ করে যাতে একই ডেটার পরবর্তী অনুরোধগুলি দ্রুত করা যায়। RAM ক্যাশের বিপরীতে, Disk Cache অ্যাপ্লিকেশন এবং একি ডিভাইস রিস্টার্টের পরেও ডেটা ধরে রাখে।

iOS দুটি প্রধান ক্যাশিং স্তর প্রদান করে: অস্থায়ী (NSCache, মেমরি) এবং ডিস্ক-ভিত্তিক (URLCache, ফাইল সিস্টেম)। ডিস্ক ক্যাশ অস্থায়ী ক্যাশের চেয়ে 10–100 গুন ধীর, কিন্তু একটি নেটওয়ার্ক অনুরোধের চেয়ে উল্লেখযোগ্যভাবে দ্রুত — পার্থক্য 2 থেকে 3 অর্ডার অফ ম্যাগনিটিউড হতে পারে। সর্বোত্তম কৌশল একটি দুই-স্তরীয় ক্যাশ ব্যবহার করে: গরম ডেটার জন্য মেমরি এবং ঠান্ডা ডেটার জন্য ডিস্ক।

Apple Performance Optimization Guide, 2023 অনুযায়ী, একটি সঠিকভাবে কনফিগার করা Disk Cache বারবার দেখার জন্য কন্টেন্ট লোডিং সময় 60–80% এবং ট্রাফিক ব্যবহার 40–70% হ্রাস করে। মিডিয়া-সমৃদ্ধ অ্যাপ্লিকেশন (ছবি, ভিডিও, অডিও) এর জন্য, ক্যাশিং একটি গুরুত্বপূর্ণ UX ফাক্টর।

URLCache: নির্মিত ক্যাশিং প্রক্রিয়া

URLCache হল একটি নির্মিত Foundation ক্লাস যা URLSession অনুরোধের জন্য একটি সম্মিলিত ক্যাশ বাস্তবায়ন করে। এটি Cache-Control, Expires এবং ETag এর মতো HTTP হেডারের উপর ভিত্তি করে ক্যাশ আকার এবং ইনভ্যালিডেশন নীতি পরিচালনা করে সর্বর প্রতিক্রিয়া স্বচালিতভাবে ডিস্ক এবং মেমরিতে সংরক্ষণ করে।

swift
import Foundation

let cache = URLCache(
    memoryCapacity: 50 * 1024 * 1024,
    diskCapacity: 200 * 1024 * 1024,
    diskPath: "network-cache"
)

URLCache.shared = cache

let config = URLSessionConfiguration.default
config.urlCache = cache
config.requestCachePolicy = .returnCacheDataElseLoad

let session = URLSession(configuration: config)

URLCache ক্যাশিং নীতি নির্ধারণ করে কত সময় ক্যাশ করা ডেটা ব্যবহার করতে হবে এবং কত সময় একটি নতুন অনুরোধ করতে হবে। প্রধান নীতিগুলি হল: useProtocolCachePolicy (সর্বর হেডারের উপর ভিত্তি করে), reloadIgnoringLocalCacheData (সব সময় সর্বর থেকে), returnCacheDataElseLoad (প্রথমে ক্যাশ), returnCacheDataDontLoad (শুধু ক্যাশ — অফলাইন মোড)।

Cache-Control হল একটি HTTP হেডার যা সর্বর প্রতিক্রিয়ার সংযোগে পাঠায়, যা max-age (সেকেন্ডে আয়ুকাল), must-revalidate (তাজকি যাচাই করুন), no-cache (যাচাই ছাড়া ব্যবহার করবেন না) এবং no-store (ক্যাশ করবেন না) নির্দিষ্ট করে। useProtocolCachePolicy নীতির সাথে URLCache ব্যবহার করার সময় iOS স্বচালিতভাবে এই হেডারগুলি কঠোরভাবে পালন করে।

কাস্টম ক্যাশিং কৌশল এবং ইনভ্যালিডেশন

কাস্টম ক্যাশিং প্রয়োজন যখন নির্মিত URLCache অপর্যাপ্ত — প্রক্রিয়াকৃত ছবি, সিরিয়ালাইজড ডেটা মডেল বা গণনার ফলাফল সংরক্ষণের জন্য। এমন ক্ষেত্রে, ডিভেলপাররা অ্যাপ্লিকেশনের Sandbox-এ Caches ডিরেক্টরির উপর ভিত্তি করে নিজস্ব ক্যাশিং সিস্টেম তৈরি করে।

swift
class DiskCache<T: Codable> {
    private let cacheDir: URL
    private let encoder = JSONEncoder()
    private let decoder = JSONDecoder()

    init() {
        let paths = FileManager.default
            .urls(for: .cachesDirectory,
                     in: .userDomainMask)
        cacheDir = paths[0].appendingPathComponent(
            "data-cache", isDirectory: true
        )
        try? FileManager.default
            .createDirectory(at: cacheDir,
                             withIntermediateDirectories: true)
    }

    func set(value: T, for key: String) {
        let url = cacheDir.appendingPathComponent(
            SHA256.hash(key)
        )
        if let data = try? encoder.encode(value) {
            try? data.write(to: url)
        }
    }

    func get(for key: String) -> T? {
        let url = cacheDir.appendingPathComponent(
            SHA256.hash(key)
        )
        guard let data = try? Data(contentsOf: url) else { return nil }
        return try? decoder.decode(T.self, from: data)
    }

    func clearAll() {
        try? FileManager.default
            .removeItem(at: cacheDir)
    }
}

ক্যাশ ইনভ্যালিডেশন কৌশল নির্ধারণ করে কত সময় সংরক্ষিত ডেটা অপ্রচলিত বলে বিবেচিত হয়: TTL (Time-To-Live) — ডেটা লেখার পর একটি নির্দিষ্ট সময় বাঁচে; ইভেন্ট-চালিত — একটি ঘটনার উপর ভিত্তি করে ইনভ্যালিডেশন (যেমন সর্বরে ডেটা আপডেট); ভার্সন-ভিত্তিক — API ভার্সন বা ডেটা ফরম্যাট পরিবর্তনে ইনভ্যালিডেশন; LRU (Least Recently Used) — আকার সীমা অতিক্রম করলে সবচেয়ে কম ব্যবহৃত এন্ট্রিগুলির স্বচালিত সরাসরি অপসারণ।

ব্যবহারিক নিয়ম: TTL সংবাদ এবং পূর্বানুমানযোগ্যভাবে অপ্রচলিত হয় এমন কন্টেন্টের জন্য উপযুক্ত। ইভেন্ট-চালিত পুশ বিজ্ঞপ্তির মাধ্যমে সর্বর পরিচালিত ডেটার জন্য। ভার্সন-ভিত্তিক কনফিগরেশন এবং ডেটা মডেল ক্যাশের জন্য। LRU সীমিত ডিস্ক স্থান সহ মিডিয়া ফাইলের জন্য একটি সার্বত্রিক পছন্দ।

ক্যাশ কর্মক্ষমতা এবং সীমাবদ্ধি

Disk Cache কর্মক্ষমতা hit ratio দিয়ে পরিমাপ করা হয় — নেটওয়ার্ক কল ছাড়া ক্যাশ থেকে সন্তুষ্ট অনুরোধের শতাংশ। একটি সঠিকভাবে কনফিগার করা ছবির ক্যাশের জন্য সাধারণ hit ratio 70–90%, API প্রতিক্রিয়ার জন্য 40–60%, স্ট্রিমিং ভিডিওর জন্য 30–50%।

ডেটার ধরনসাধারণ hit ratioপ্রস্তাবিত ক্যাশ আকার
ছবি70–90%100–500 MB
API JSON প্রতিক্রিয়া40–60%10–50 MB
ভিডিও/অডিও30–50%500 MB — 1 GB
ফন্ট এবং রিসোর্স90–99%5–20 MB
ওয়েব কন্টেন্ট50–70%50–200 MB

iOS-এ Disk Cache সীমাবদ্ধি: সিস্টেম যেকোন সময় Caches ডিরেক্টরির পরিবর্তন মুছে ফেলতে পারে যখন ডিস্ক স্থান কম থাকে। এই আচরণ কনফিগর যোগ্য নয় — iOS সিদ্ধান্ত নেয় কত এবং কোন ক্যাশ ফাইল মুছতে হবে। সুতরাং, ক্যাশে এমন ডেটা থাকা উচিত নয় যা নেটওয়ার্ক বা অন্য উৎস থেকে পুনরুদ্ধার করা যায় না।

ফ্ল্যাশ মেমরিতে প্রভাব: Disk Cache-এ ঘন লেখা ফ্ল্যাশ স্টোরেজের পরিধাংশ তবরান্বিত করে। iOS পরিধাংশ কমাতে TRIM এবং wear leveling ব্যবহার করে, কিন্তু ডিভেলপারদের অতিরিক্ত লেখা এড়াতে পরামর্শ করা হয়: একই ফাইলের জন্য প্রতি 5 মিনিটে একবারের বেশি ক্যাশ আপডেট করবেন না; ছোট লেখা একত্রিত করুন; ডিস্কে সংরক্ষণের প্রয়োজন নেই এমন অস্থায়ী ডেটার জন্য NSCache ব্যবহার করুন।

iOS-এ ক্যাশিংয়ের সর্বোত্তম অভ্যাস

দুই-স্তরীয় ক্যাশ iOS অ্যাপ্লিকেশনের জন্য মানক আর্কিটেক্চার: বারবার অ্যাক্সেস করা ডেটার জন্য মেমরি (NSCache), এবং সেশনের মধ্যে ধরে রাখার প্রয়োজন এমন ডেটার জন্য ডিস্ক (URLCache বা কাস্টম)। মেমরিতে আয়ুকাল — মিনিট, ডিস্কে — ঘন্টা বা দিন।

ছবি ক্যাশিং: বিশেষায়ন লাইব্রেরি (Kingfisher, SDWebImage, Nuke) ব্যবহার করুন যা স্বচালিত ইনভ্যালিডেশন, মেমরি পরিচালনা এবং অসিঙ্ক্রনাস ডিস্ক লেখার সাথে একটি দুই-স্তরীয় ক্যাশ বাস্তবায়ন করে। একটি কাস্টম ছবির ক্যাশ বাস্তবায়নের জন্য ডিকোডিং, রঙ্গ স্পেশ এবং স্কেলিং বিবেচনা করা প্রয়োজন।

ক্যাশ এবং নিরাপত্তা: এনক্রিপ্শন ছাড়া ডিস্কে সংবেদনশীল ডেটা (পাসওয়ার্ড, টোকন, ব্যক্তিগত ডেটা) ক্যাশ করবেন না। URLCache ডিফল্টভাবে ডেটা এনক্রিপ্ট করে না — সংবেদনশীল কন্টেন্টের জন্য NSFileProtection বা অ্যাপ্লিকেশন-স্তরীয় এনক্রিপ্শন ব্যবহার করুন। প্রাধিকৃত নেটওয়ার্ক অনুরোধের জন্য, .reloadIgnoringLocalCacheData নীতি ব্যবহার করুন।

ক্যাশ মনিটরিং: hit ratio, বর্তমান ক্যাশ আকার এবং প্রতি মিনিট লেখা নিরীক্ষণ করুন। যদি hit ratio 30% এর নীচে নামে, তবে ক্যাশ অক্ষম এবং কৌশল পরিবর্তন বা আকার বৃদ্ধি প্রয়োজন। Point-Free (2024) অনুযায়ী, ক্যাশ মনিটরিং হল iOS অ্যাপ্লিকেশন কর্মক্ষমতা অপ্টিমাইজেশনের সবচেয়ে অবমূল্যায়িত অভ্যাসগুলির মধ্যে একটি।

সামন্য প্রশ্নাবলী

iOS-এ Disk Cache কি?

Disk Cache হল একটি প্রযুক্তি যা বারবার প্রবেশ ত্বরান্বিত করার জন্য ডিভাইসের ডিস্কে ডেটা সংরক্ষণ করে। iOS-এর নির্মিত URLCache HTTP প্রতিক্রিয়া ক্যাশ করে, এবং ডিভেলপাররা Caches ডিরেক্টরির মাধ্যমে কাস্টম ক্যাশ তৈরি করতে পারেন।

Disk Cache RAM Cache থেকে কিভাবে আলাদা?

RAM Cache (NSCache) ডেটা RAM-এ সংরক্ষণ করে — দ্রুত, কিন্তু অ্যাপ্লিকেশন রিস্টার্টে হারিয়ে যায়। Disk Cache ধীর কিন্তু সেশনের মধ্যে টিকে থাকে। সর্বোত্তম কৌশল উভয় স্তর ব্যবহার করে: গরম ডেটার জন্য মেমরি, ঠান্ডা ডেটার জন্য ডিস্ক।

iOS কি আমার ক্যাশ মুছে ফেলতে পারে?

হ্যাঁ, সিস্টেম যেকোন সময় Caches ডিরেক্টরির পরিবর্তন মুছে ফেলতে পারে যখন ডিস্ক স্থান কম থাকে। সুতরাং, ক্যাশে কখনও অপুনরুদ্ধার্য ডেটা সংরক্ষণ করবেন না। ব্যবহারকারী ডকুমেন্টের জন্য Documents ডিরেক্টরি ব্যবহার করুন।

সঠিক ক্যাশ আকার কিভাবে চয়ন করবেন?

ক্যাশ আকার ডেটার ধরনের উপর নির্ভর করে: ছবির জন্য 100–500 MB, API প্রতিক্রিয়ার জন্য 10–50 MB, ভিডিওর জন্য 1 GB পর্যন্ত। hit ratio নিরীক্ষণ করুন — যদি এটি 50% এর নীচে নামে, তবে ক্যাশ আকার বাড়ান বা ইনভ্যালিডেশন কৌশল পরিবর্তন করুন।

iOS অ্যাপ্লিকেশনে ক্যাশ কিভাবে পরিষ্কার করবেন?

URLCache.removeAllCachedResponses() নির্মিত ক্যাশ পরিষ্কার করে। কাস্টম ক্যাশের জন্য, FileManager এর মাধ্যমে Caches ডিরেক্টরি থেকে ফাইল মুছুন। সব সময় অ্যাপ্লিকেশন সেটিংয়ের মাধ্যমে ব্যবহারকারীদের ক্যাশ পরিষ্কারের বিকল্প দিন।

সারাংশ

  • Disk Cache — দ্রুত বারবার প্রবেশ এবং কম ট্রাফিকের জন্য ডিস্কে অস্থায়ী ডেটা সংরক্ষণ
  • URLCache — Cache-Control সমর্থন সহ নির্মিত Foundation HTTP অনুরোধ ক্যাশিং
  • Caches ডিরেক্টরি — অস্থায়ী ডেটার জন্য Sandbox ডিরেক্টরি, স্থান কম হলে সিস্টেম দ্বারা পরিষ্কার করা হয়
  • ইনভ্যালিডেশন TTL, ইভেন্ট, ভার্সন বা LRU দ্বারা সম্পাদিত হয় — পছন্দ ডেটার ধরনের উপর নির্ভর করে
  • Hit ratio — মূল ক্যাশ দক্ষতা মেট্রিক: 70%+ ছবির জন্য, 40–60% API এর জন্য
  • দুই-স্তরীয় ক্যাশ (RAM + Disk) — iOS অ্যাপ্লিকেশনের জন্য মানক আর্কিটেক্চার
  • নিরাপত্তা — সংবেদনশীল ডেটা এনক্রিপ্শন ছাড়া ডিস্কে ক্যাশ করা উচিত নয়

আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব

IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।

প্রকল্প নিয়ে আলোচনা করুন

আরও পড়ুন