Merge pull request #3004 from fengyuecanzhu/master
Enable the in-memory cache to cache objects.
This commit is contained in:
@@ -15,10 +15,10 @@ object CacheManager {
|
|||||||
/**
|
/**
|
||||||
* 最多只缓存50M的数据,防止OOM
|
* 最多只缓存50M的数据,防止OOM
|
||||||
*/
|
*/
|
||||||
private val memoryLruCache = object : LruCache<String, String>(1024 * 1024 * 50) {
|
private val memoryLruCache = object : LruCache<String, Any>(1024 * 1024 * 50) {
|
||||||
|
|
||||||
override fun sizeOf(key: String, value: String): Int {
|
override fun sizeOf(key: String, value: Any): Int {
|
||||||
return value.memorySize()
|
return value.toString().memorySize()
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -35,18 +35,18 @@ object CacheManager {
|
|||||||
is ByteArray -> ACache.get().put(key, value, saveTime)
|
is ByteArray -> ACache.get().put(key, value, saveTime)
|
||||||
else -> {
|
else -> {
|
||||||
val cache = Cache(key, value.toString(), deadline)
|
val cache = Cache(key, value.toString(), deadline)
|
||||||
putMemory(key, value.toString())
|
putMemory(key, value)
|
||||||
appDb.cacheDao.insert(cache)
|
appDb.cacheDao.insert(cache)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun putMemory(key: String, value: String) {
|
fun putMemory(key: String, value: Any) {
|
||||||
memoryLruCache.put(key, value)
|
memoryLruCache.put(key, value)
|
||||||
}
|
}
|
||||||
|
|
||||||
//从内存中获取数据 使用lruCache
|
//从内存中获取数据 使用lruCache
|
||||||
fun getFromMemory(key: String): String? {
|
fun getFromMemory(key: String): Any? {
|
||||||
return memoryLruCache.get(key)
|
return memoryLruCache.get(key)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -56,7 +56,7 @@ object CacheManager {
|
|||||||
|
|
||||||
fun get(key: String): String? {
|
fun get(key: String): String? {
|
||||||
getFromMemory(key)?.let {
|
getFromMemory(key)?.let {
|
||||||
return it
|
if (it is String) return it
|
||||||
}
|
}
|
||||||
val cache = appDb.cacheDao.get(key)
|
val cache = appDb.cacheDao.get(key)
|
||||||
if (cache != null && (cache.deadline == 0L || cache.deadline > System.currentTimeMillis())) {
|
if (cache != null && (cache.deadline == 0L || cache.deadline > System.currentTimeMillis())) {
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ object CookieStore : CookieManager {
|
|||||||
override fun getCookie(url: String): String {
|
override fun getCookie(url: String): String {
|
||||||
val domain = NetworkUtils.getSubDomain(url)
|
val domain = NetworkUtils.getSubDomain(url)
|
||||||
CacheManager.getFromMemory("${domain}_cookie")?.let {
|
CacheManager.getFromMemory("${domain}_cookie")?.let {
|
||||||
return it
|
if (it is String) return it
|
||||||
}
|
}
|
||||||
|
|
||||||
val cookieBean = appDb.cookieDao.get(domain)
|
val cookieBean = appDb.cookieDao.get(domain)
|
||||||
|
|||||||
@@ -614,8 +614,10 @@ class AnalyzeUrl(
|
|||||||
if (enabledCookieJar) {
|
if (enabledCookieJar) {
|
||||||
val key = "${domain}_cookieJar"
|
val key = "${domain}_cookieJar"
|
||||||
CacheManager.getFromMemory(key)?.let {
|
CacheManager.getFromMemory(key)?.let {
|
||||||
CookieStore.replaceCookie(domain, it)
|
if (it is String) {
|
||||||
CacheManager.deleteMemory(key)
|
CookieStore.replaceCookie(domain, it)
|
||||||
|
CacheManager.deleteMemory(key)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user