Tengo una plantilla que muestra varias entradas que el autor puede editar / eliminar. Los usuarios pueden eliminar sus mensajes haciendo clic en Eliminar
Después de la eliminación, el usuario se redirige a la página de entradas, pero el elemento todavía está allí, y la página debe volver a cargarse para mostrar el efecto de eliminación. Si deshabilito el almacenamiento en caché, el problema desaparece, pero realmente quiero tener cachés en todas las demás páginas …
Agregar estas tags no funcionó, creo que mi navegador simplemente las ignora
Estoy habilitando el canal de caché:
@app.after_request def add_header(response): response.headers['X-UA-Compatible'] = 'IE=Edge,chrome=1' response.headers['Cache-Control'] = 'public, max-age=600' return response
¿Hay alguna manera de desactivarlo para una página específica?
editar
como sugerí intenté usar una envoltura:
def no_cache(f): def new_func(*args, **kwargs): resp = make_response(f(*args, **kwargs)) resp.cache_control.no_cache = True return resp return update_wrapper(new_func, f)
y envuelva la página que quiero sin caché en un decorador @no_cache, aún no tuve suerte …
Puede intentar agregar encabezados de control de caché solo si no hay tales encabezados para una página específica:
@app.after_request def add_header(response): response.headers['X-UA-Compatible'] = 'IE=Edge,chrome=1' if ('Cache-Control' not in response.headers): response.headers['Cache-Control'] = 'public, max-age=600' return response
Y en el código de tu página, por ejemplo:
@app.route('/page_without_cache') def page_without_cache(): response.headers['Cache-Control'] = 'no-cache, no-store, must-revalidate' response.headers['Pragma'] = 'no-cache' return 'hello'
El punto es que no debe anular sus encabezados en @app.after_request
para todas las páginas, solo para aquellas en las que el caché no está desactivado explícitamente.
Además, es posible que desee mover el código agregando encabezados a una envoltura como @no_cache
, para que pueda usarlo así:
@app.route('/page_without_cache') @no_cache def page_without_cache(): return 'hello'