Cómo sincronizar motores entre cliente y servidor iOS

Solo hay dos cosas difíciles en Ciencias de la Computación: invalidación de caché, nombrar cosas y errores fuera de uno.

Su pregunta pertenece a la categoría de “invalidación de caché”. Le sugiero que se inspire en HTTP (o tal vez incluso use HTTP directamente); allí, cuando el servidor envía una pieza de contenido, enviará un encabezado de Last-Modified con la fecha y hora UTC cuando se creó el contenido (o se actualizó) ) Cuando el cliente envía una solicitud (no importa debido al intervalo regular o simplemente a una nueva solicitud), incluirá un encabezado If-Modified-Since , donde repetirá la fecha y hora que ha guardado de la solicitud original, si el servidor determina que el contenido no ha cambiado desde entonces, responderá con 304 Not Modified con un cuerpo de respuesta vacío, de lo contrario solo 200 OK y el cuerpo (nuevo para el cliente). De esta manera, aunque habrá una solicitud, solo habrá algunos encabezados si el contenido no ha cambiado realmente.

También hay alternativas que evitan las conexiones por completo, por ejemplo, el encabezado Expires que le dice al navegador que ni siquiera se moleste antes de la hora mencionada, y solo use directamente lo que haya almacenado en caché.

Otra alternativa interesante es usar nombres únicos para todos (las versiones de) recursos (por ejemplo, puede usar GUID), y decirle al cliente que guarde en caché para siempre: el archivo “índice” puede usar la primera técnica con las fechas de modificación, y si desea actualizar algunos de los recursos a los que se refiere (sin importar cuáles sean), simplemente genere un nuevo nombre; cuando el cliente no puede encontrar algún nombre en su caché, lo descargará. Si está implementando esto usted mismo, tenga cuidado de que el caché no crezca sin límites: puede mantener su tamaño constante pensando en alguna política de desalojo, de modo que cuando se agrega un nuevo elemento, sea menos probable que se use en El futuro se desperdicia. Por supuesto, no puede ver el futuro, por lo que tendrá que elaborar una política de compromiso que tenga sentido para su aplicación (por ejemplo, Menos utilizado recientemente, también conocido como LRU – Algoritmos de caché).

En su lugar, trataría de usar HTTP. No hay razón para escribir cosas que ya estén bien escritas por otra persona 🙂

PD: si se pregunta cuándo buscar actualizaciones, hay dos enfoques: push y sondeo. En las encuestas, verifica a intervalos regulares (por ejemplo, cuando se abre su aplicación, cuando el usuario hace clic en actualizar y cada 15 minutos). En push, tiene una manera para que su servidor envíe algo al cliente, para pedirle que se actualice (ya sea conexión TCP bidireccional, o en el mundo web, WebSockets, o alguna API de Apple push o algo así).

More Interesting

Cómo saber cuál es mejor para mí, el desarrollo de aplicaciones Android o iOS

¿Debo ingresar para el desarrollo de aplicaciones iOS o Windows?

¿Cuánto costaría desarrollar y mantener una aplicación de red social desde cero usando Swift en la plataforma iOS por su cuenta?

¿Cuáles son los mejores desarrolladores de aplicaciones para iPhone en Suiza?

¿Qué implica el desarrollo de una aplicación para productos Apple?

¿Cuáles son las mejores redes publicitarias móviles para desarrolladores? Se define mejor como tener CPM, tasa de relleno, Geo Aware y las compañías pagan. Las plataformas son Android y iPhone.

¿Qué son los derechos de Xcode?

¿Cuál es el significado de sandbox para un proceso de desarrollo de aplicaciones de iPhone?

¿Qué debo hacer o aprender para convertirme en desarrollador de juegos y tener mis propios juegos?

¿Puede una aplicación iOS tener sus propios Términos de servicio?

¿Dónde se encuentran los desarrolladores de iPhone remotos asequibles?

¿Cómo fue trabajar en iOS 1.0? ¿Cuáles fueron algunas lecciones aprendidas sobre el diseño y la escritura de una plataforma para un dispositivo nuevo?

Estoy tratando de decidir si construir una aplicación de Facebook en Flash y luego construir un cliente nativo de Iphone, o si debo construir la aplicación en HTML5 / Javascript para que pueda funcionar desde un iPhone. ¿Qué cosas debo considerar?

¿Cuándo saldrá IOS 10 y qué características tendrá?

¿Hay alguna manera de escribir código de iOS sin una Mac (particionamiento o algún software que funcione)?