सार्वजनिक जानकारी से बना चयन मार्गदर्शन। केवल संदर्भ हेतु।
cached_value एक हल्का Flutter/Dart पैकेज है जो महंगे संचालन से उत्पन्न मानों को कैश करने का आसान तरीका प्रदान करता है। यह सुनिश्चित करता है कि एक बार मान की गणना करने के बाद, इसे संग्रहीत किया जाता है और पुनः गणना किए बिना फिर से उपयोग किया जाता है, जिससे प्रदर्शन में सुधार और देरी कम होती है। पैकेज असिंक्रोनस संचालन का समर्थन करता है और कॉन्फ़िगरेबल एक्सपायर समय के साथ स्वचालित रूप से कैशिंग का प्रबंधन करता है। API प्रतिक्रियाओं, जटिल गणनाओं या डेटा विश्लेषण जैसे परिदृश्यों के लिए आदर्श है जहां पुनरावृत्ति गणना से बचा जाना चाहिए।
उपयोग
Caching API प्रतिक्रियाएं
गणना परिणाम संग्रहीत करना
आवश्यकता से अधिक डेटा प्रसंस्करण को कम करना
एप्लिकेशन की प्रतिक्रिया में सुधार करना
महंगे प्रारंभिक कार्यों का प्रबंधन
अस्थायी अवस्था को बनाए रखना
मुख्य विशेषताएँ
सरल एसिंक कैशिंग
निर्धारित करने योग्य अवधि समाप्त होना
समाप्ति पर स्वचालित पुनर्गणना
नल सुरक्षित मानों का समर्थन करता है
हल्का और न्यूनतम निर्भरता
प्लेटफॉर्म के अनुकूलता
इनके लिए उपयुक्त
सरल कैशिंग की तलाश करने वाले डेवलपर्स
अक्सर महंगी गणना करने वाले ऐप्स
प्रदर्शन अनुकूलन परियोजनाएं
कैश की गई डेटा के साथ राज्य प्रबंधन
त्वरित कैशिंग समाधान प्रोटोटाइपिंग
विचार योग्य बातें
बड़े डेटासेट के लिए उपयुक्त नहीं
एप्लिकेशन रीस्टार्ट के बाद कोई बिल्ट-इन पर्सिस्टेंस नहीं है
कुछ मामलों में हस्तक्षेप से कैश को निकालने की आवश्यकता होती है
मेमोरी में संग्रहण तक सीमित
अल्पकालिक कैश्ड मान के लिए सर्वोत्तम
जटिल कैश नीतियों का समर्थन नहीं करता है
मूल README
संबंधित सोर्स रिपॉज़िटरी के मूल README का स्नैपशॉट। नवीनतम सामग्री के लिए रिपॉज़िटरी देखें।
cached_value
A simple way to cache values that result from rather expensive operations.
It is useful to cache values that:
Are computed from other values in a consistent way;
Can be changed given known and unknown conditions;
Should not be computed on every access (like a getter);
A cached_value is better used over imperative APIs, such as Flutter's render objects. See Motivation for more.
Installation
Add to pubspec.yaml:
dartpubaddcached_value
Usage
A cache can start as a simple manually controlled cache and then be enhanced with automatic functionalities such as dependencies and time-to-live (TTL).
1.Creating a simple cached that is invaldiated manually
intfactorial(int n) {
if (n < 0) throw ('Negative numbers are not allowed.');
return n <= 1 ? 1 : n * factorial(n - 1);
}
int originalValue = 1;
final factorialCache = CachedValue(() => factorial(originalValue));
print(factorialCache.value); // 1
originalValue = 6;
print(factorialCache.value); // 1print(factorialCache.isValid) // true, invalid only when invalidate is called// mark as invalid
factorialCache.invalidate();
print(factorialCache.isValid); // falseprint(factorialCache.value); // 720print(factorialCache.isValid); // true
Accessing value when the cache is invalid refreshes the cache. It can be refreshed manually via
the refresh method:
Some imperative APIs such as the canvas paint on Flutter render objects of Flame's components may
benefit from values that can be stored and reused between more than a single frame (or paint).
In some very specific cases, I found very convenient to store some objects across frames, like
Paint and TextPainter instances.