Evitar cach mientras realizas un Request Http – C# (Windows Phone)

En el contexto de servicio web (Apies y demás) esto de caching es mas bien una funcionalidad, pero en ocasiones como las que he pasado usando Dotnet apps o framework es que cachean mucho y la información que recibo pues no es fresca o en el peor de los casos es invalida.

Existen varias formas de como evitar esto del cacheo unas cuantas generales aplicables para cualquier plataforma y otras específicamente para C# (Con código C# pero igual aplicable para otras tecnologias).

Evitar cach

Opción #1

Una forma para evitarlo es agregar un numero random a nuestra URL cosa de que siempre se estará realizando un request nuevo.

Digamos que nuestra url es «http://54.90.146.118/» cada request que hagamos posiblemente nos retornara lo mismo por que inteligente mente nuestra libreria pensara «es la misma url, deja retornar el mismo resultado y que se vea super rapido» esto podría ser util si y solo si el contenido no va a cambiar.

Para solucionar esto seria algo como esto

C#


    String url = "http://54.90.146.118/?randomName=" + Guid.NewGuid().ToString();

Javascript

    var url = "http://54.90.146.118/?randomName=" +(Math.random() * 1000000).toString()

Opción #2

En el caso de que esten usando HttpRequestMessage para solucionarlo seria agregando el header IfModifiedSince junto con una fecha (Digamos la fecha actual)

C#


    HttpRequestMessage request = ...

    request.Headers.IfModifiedSince = new DateTimeOffset(DateTime.Now);

    // Se puede agregar directamente al HTTPClient
    HttpClient client = ...

    client.DefaultRequestHeaders.IfModifiedSince

Bueno hasta aqui este mini-post de como evitar ese cach, me surgió la idea de hacerlo por que me enfrente a el en estos ultimo dias y habia olvidado estas maravillas de Dotnet, me hicieron recordar en los principios de AJAX y HTTP Request object era necesario realizar esto si o si, de lo contrario Internet explorer retornaba la misma información ehehehhe.

Referencia

HttpRequestMessage