¿Cómo establecer el tamaño de almacenamiento en caché y disco de iOS y cómo se restaura el caché del almacenamiento en disco después de la finalización de la aplicación?

Ya he preguntado ¿Cuándo se eliminan exactamente las cosas de la memoria y el disco de urlcache?

Ahora tengo algunas preguntas de seguimiento más:

La memoria caché está restringida por la memoria RAM del iPhone (generalmente 2 Gb). Pero la persistencia del disco está limitada por 64 Gb o 128 Gb. ¿Es eso correcto

¿Tiene sentido tener una persistencia más que su almacenamiento de memoria? ¿Puede ser útil si no desea tener una gran huella de memoria (y no desea que la aplicación finalice desde su estado suspendido), es decir, permitir que la caché se restaure del almacenamiento en disco y luego devolver resultados persistentes?

Después de controlar hacer clic enURLCache.shared Veo los siguientes comentarios:

Capacidad de memoria: 4 megabytes (4 * 1024 * 1024 bytes) Capacidad de disco: 20 megabytes (20 * 1024 * 1024 bytes) Ruta del disco:(user home directory)/Library/Caches/(application bundle id)

Los usuarios que no tienen requisitos o restricciones especiales de almacenamiento en caché deberían considerar aceptable la instancia de caché compartida predeterminada. Si esta instancia predeterminada de caché compartida no es aceptable,+setSharedURLCache:e puede llamar a @ para establecer una @ diferenNSURLCache instancia que se devolverá de este método. Las personas que llaman deben asegurarse de que se llama al configurador en un momento en que ninguna otra persona tiene una referencia a la caché de URL compartida previamente establecida. Esto es para evitar que el almacenamiento de datos de caché se vuelva inesperadamente irrecuperable.

Así que creo que mi razón es correcta.

¿Cómo funciona el proceso general de lectura / escritura / restauración del trabajo en caché?

Quiero decir que cuando realizo una solicitud de red por primera vez, ¿es que toda la respuesta / error / datos obtieneescrit / almacenado en caché y luego en persistencia?

La próxima vez si quierolee entonces comienza primero desde el caché y luego si la respuesta fuen obsoleto / caducado, luego lo devolverá. Nada cambiaría para el almacenamiento en disco.

Si expiró, haría una nueva solicitud y solo al obtener una respuesta exitosa, purgaría la respuesta de la memoria y el disco y escribiría la nueva respuesta en la caché y el disco. Si la nueva solicitud falla, entonces no se purgará, sino que simplemente mantendría los datos obsoletos / caducados, por lo que si quisiéramos (cargar la respuesta caducada) se cargaría desde allí.

Y cuando finaliza la aplicación, la memoria se vacía. El almacenamiento en disco se deja intacto a menos que el dispositivo tenga poca memoria o haya alcanzado el límite de tamaño. En el próximo lanzamiento de la aplicación, la memoria vuelve a cargar todo lo que hay en el almacenamiento del disco en el caché.

Esta restauración de caché comenzará a cargar los últimos datos almacenados y luego pasará a los datos más antiguos hasta que alcance su límite de tamaño o simplemente llegue al final de los elementos almacenados en el disco. ¿Correcto

Si en un día normal, la cantidad de redes que un usuario hace para una sesión típica de 1 hora es de aproximadamente 30 MB, ¿debería establecer el tamaño de mi caché en 20 MB y 30 MB de almacenamiento en disco? ¿Qué pasa si tengo imágenes? He oído que las imágenes se almacenan de manera diferente, ya que en una imagen de 1 MB puede tomar 10 MB de tamaño. Entonces, ¿cómo debo manejar eso?

Estoy preguntando todo esto porque quiero mejorar la experiencia de almacenamiento en caché en una aplicación y mejorar mi comprensión general para no aumentar demasiado el uso de memoria * de la aplicación para que no se elimine de la memoria su estado suspendido debido al alto uso de memoria de mis aplicaciones u otras aplicaciones que se necesitan.

*: algunas de nuestras solicitudes de red descargarán miniaturas, por lo que debo ser considerado cuando aumente mi límite de tamaño de almacenamiento en caché.

Respuestas a la pregunta(1)

Su respuesta a la pregunta