Evitar resultados de cache en las llamadas REST a SharePoint (HTTP 304)

Por defecto, si el contenido que estamos obteniendo no ha cambiado, obtendrá la respuesta de la cache del navegador, dándonos un código HTTP 304 (Not Modified).

Un ejemplo en el que nos puede dar problemas es si trabajamos con una query para obtener una lista en SharePoint y utilizamos el $expand para incluir tambien los Items de esa lista. Aunque esos items cambien, no lo detectará para rehacer la query y nos devolverá la lista (y los elementos) de cache.

Para evitar ese comportamiento debemos añadir unos headers adicionales que obligarán siempre a hacer la llamada:

'Cache-Control': 'no-cache, no-store, must-revalidate',
'Pragma': 'no-cache',
'Expires': '0'

Ejemplo de los headers en una solucion SPFx:

const spHttpClient: SPHttpClient = context.spHttpClient;
const noCacheOptions: ISPHttpClientOptions = {
    headers: {
        'Accept': 'application/json;',
        'Content-type': 'application/json;',
        'Cache-Control': 'no-cache, no-store, must-revalidate',
        'Pragma': 'no-cache',
        'Expires': '0'
    }
}
const resp = await spHttpClient.get(REST_API_URL, SPHttpClient.configurations.v1, noCacheOptions);

No Responses

Leave a Reply

Your email address will not be published. Required fields are marked *