¿Se puede arreglar el RSS?
Friday 28 de September de 2007
Hace poco leí un artículo en Reddit (y ni me acuedo del link) que decía que el RSS nació para arreglar un problema que nunca existió, y crear otro en su lugar: desperdiciar ancho de banda.
Según dice, demasiado tráfico se desperdicia por el hecho de que, como la Internet es anónima, “Suscribirse” a un RSS NO ES suscribirse a un RSS. Suscribirse quiere decir que alguien te lo manda, pero al RSS se lo pide. (Hay algo para decir con respecto a los “pings” sobre esto, pero no viene al caso.)
Entonces, cada 2 minutos, alguien hace click en su botón de actualizar, y manda varios paquetes a todas las URLs donde está “suscrito”. Cada una procede, entonces, a mandarle sus últimos 10 posts, que, digamos, son de 1kB cada uno. 10kB * 10 posts * 50 URLs * 1000000 de usuarios, y se nota para donde va esto.
En uno de mis momentos de ideas repentinas (estúpidas e inútiles, casi siempre, pero repentinas), pensé: Y… ¿por qué no mandar una simple cadena: un GET del tipo ?latestpost=1190961528. Si no está, bueno, se mandan los 10 posts. No arreglamos nada, pero al menos no rompemos nada. Es compatible con lo que ya existe… ¿Y si está? y si está, simple: $query .= " WHERE date >". date("Y-m-d",$GET['latestpost']);.
Supongamos que ponemos eso en nuestro feed RSS:
Ventajas: ahorrar ancho de banda (asumiendo que alguien lo aplique).
Desventajas potenciales:
- Seguridad: el date() solo va a morirse si la cadena llega a tener algo más que números… y si no? /[^0-9]/.
- Tiempo de procesador: dos palabras: Un. If.
- Retraso en el acceso a la base de datos: Idem: Un. Where.
- Pedir una fecha demasiado vieja: Uhm… LIMIT?
¿Y del lado de los clientes RSS? Para aplicar, lo único que tienen que guardar es la fecha del último post recibido…
La verdad que esto es tan estúpido que, si no existe ya, guau… y si existe… ¿por qué el problema de “mucho ancho de banda”?
Monday 29 de October de 2007, 8:56 pm
Otra opción sería enviar un header HTTP (Last-Modified) con la fecha de actualización del feed, de esta manera el consumo se reduciría a unos cuantos bytes.