Basics

कैश

परिचय

Nylo Website v7 डेटा को कुशलता से संग्रहीत और पुनर्प्राप्त करने के लिए एक फ़ाइल-आधारित कैश सिस्टम प्रदान करता है। कैशिंग महंगे डेटा जैसे API रिस्पॉन्स या कंप्यूटेड रिजल्ट्स को संग्रहीत करने के लिए उपयोगी है।

import 'package:nylo_framework/nylo_framework.dart';

// Cache a value for 60 seconds
String? value = await cache().saveRemember("my_key", 60, () {
  return "Hello World";
});

// Retrieve the cached value
String? cached = await cache().get("my_key");

// Remove from cache
await cache().clear("my_key");

एक्सपायरेशन के साथ सेव करें

एक्सपायरेशन टाइम के साथ वैल्यू कैश करने के लिए saveRemember का उपयोग करें:

String key = "user_profile";
int seconds = 300; // 5 minutes

Map<String, dynamic>? profile = await cache().saveRemember(key, seconds, () async {
  // This callback only runs on cache miss
  printInfo("Fetching from API...");
  return await api<UserApiService>((request) => request.getProfile());
});

एक्सपायरेशन विंडो के भीतर बाद की कॉल पर, कॉलबैक निष्पादित किए बिना कैश्ड वैल्यू रिटर्न होती है।

हमेशा के लिए सेव करें

डेटा को अनिश्चित काल के लिए कैश करने के लिए saveForever का उपयोग करें:

String key = "app_config";

Map<String, dynamic>? config = await cache().saveForever(key, () async {
  return await api<ConfigApiService>((request) => request.getConfig());
});

डेटा तब तक कैश्ड रहता है जब तक इसे स्पष्ट रूप से हटाया न जाए या ऐप का कैश क्लियर न हो।

डेटा प्राप्त करें

कैश्ड वैल्यू सीधे प्राप्त करें:

// Retrieve cached value
String? value = await cache().get<String>("my_key");

// With type casting
Map<String, dynamic>? data = await cache().get<Map<String, dynamic>>("user_data");

// Returns null if not found or expired
if (value == null) {
  print("Cache miss or expired");
}

यदि कैश्ड आइटम एक्सपायर हो गया है, तो get() स्वचालित रूप से इसे हटा देता है और null रिटर्न करता है।

डेटा सीधे स्टोर करें

कॉलबैक के बिना सीधे वैल्यू स्टोर करने के लिए put का उपयोग करें:

// Store with expiration
await cache().put("session_token", "abc123", seconds: 3600);

// Store forever (no seconds parameter)
await cache().put("device_id", "xyz789");

डेटा हटाएँ

// Remove a single item
await cache().clear("my_key");

// Remove all cached items
await cache().flush();

कैश जाँचें

// Check if a key exists
bool exists = await cache().has("my_key");

// Get all cached keys
List<String> keys = await cache().documents();

// Get total cache size in bytes
int sizeInBytes = await cache().size();
print("Cache size: ${sizeInBytes / 1024} KB");

API रिस्पॉन्स कैश करना

api() हेल्पर का उपयोग करना

API रिस्पॉन्स को सीधे कैश करें:

Map<String, dynamic>? response = await api<ApiService>(
  (request) => request.get("https://api.github.com/repos/nylo-core/nylo"),
  cacheDuration: const Duration(minutes: 5),
  cacheKey: "github_repo_info",
);

printInfo(response);

NyApiService का उपयोग करना

अपने API सर्विस मेथड्स में कैशिंग डिफ़ाइन करें:

class ApiService extends NyApiService {

  Future<Map<String, dynamic>?> getRepoInfo() async {
    return await network(
      request: (request) => request.get("https://api.github.com/repos/nylo-core/nylo"),
      cacheKey: "github_repo_info",
      cacheDuration: const Duration(hours: 1),
    );
  }

  Future<List<User>?> getUsers() async {
    return await network<List<User>>(
      request: (request) => request.get("/users"),
      cacheKey: "users_list",
      cacheDuration: const Duration(minutes: 10),
    );
  }
}

फिर मेथड कॉल करें:

Map<String, dynamic>? repoInfo = await api<ApiService>(
  (request) => request.getRepoInfo()
);

प्लेटफ़ॉर्म सपोर्ट

Nylo Website का कैश फ़ाइल-आधारित स्टोरेज का उपयोग करता है और इसका प्लेटफ़ॉर्म सपोर्ट निम्नलिखित है:

प्लेटफ़ॉर्म सपोर्ट
iOS पूर्ण सपोर्ट
Android पूर्ण सपोर्ट
macOS पूर्ण सपोर्ट
Windows पूर्ण सपोर्ट
Linux पूर्ण सपोर्ट
Web उपलब्ध नहीं

वेब प्लेटफ़ॉर्म पर, कैश ग्रेसफुली डिग्रेड होता है - कॉलबैक हमेशा निष्पादित होते हैं और कैशिंग बायपास होती है।

// Check if cache is available
if (cache().isAvailable) {
  // Use caching
} else {
  // Web platform - cache not available
}

API रेफरेंस

मेथड्स

मेथड विवरण
saveRemember<T>(key, seconds, callback) एक्सपायरेशन के साथ वैल्यू कैश करें। कैश्ड वैल्यू या कॉलबैक रिजल्ट रिटर्न करता है।
saveForever<T>(key, callback) अनिश्चित काल के लिए वैल्यू कैश करें। कैश्ड वैल्यू या कॉलबैक रिजल्ट रिटर्न करता है।
get<T>(key) कैश्ड वैल्यू प्राप्त करें। न मिलने या एक्सपायर होने पर null रिटर्न करता है।
put<T>(key, value, {seconds}) सीधे वैल्यू स्टोर करें। सेकंड में वैकल्पिक एक्सपायरेशन।
clear(key) विशिष्ट कैश्ड आइटम हटाएँ।
flush() सभी कैश्ड आइटम हटाएँ।
has(key) जाँचें कि कोई की कैश में मौजूद है। bool रिटर्न करता है।
documents() सभी कैश कीज़ की सूची प्राप्त करें। List<String> रिटर्न करता है।
size() बाइट्स में कुल कैश साइज़ प्राप्त करें। int रिटर्न करता है।

प्रॉपर्टीज़

प्रॉपर्टी टाइप विवरण
isAvailable bool वर्तमान प्लेटफ़ॉर्म पर कैशिंग उपलब्ध है या नहीं।