Esta es una pregunta de seguimiento a El uso de 301/303/307 redirecciones para la dinámica de la url cortas, donde me tratan de determinar el mejor método para la aplicación de cortas de redirección de url cuando la url de destino va a cambiar de manera frecuente.

Aunque parece que los 301 y 307 redirige ambos realizan la misma manera, la cuestión que me preocupa es la redirección 301 de almacenamiento en caché (como se documenta aquí)- es la mejor manera de evitar esto es utilizar 307 redirige lugar (estoy asumiendo 307 redirige nunca caché?), o explícitamente enviar un no-cache header («Cache-Control: no-cache, must-revalidate»)?

OriginalEl autor Yarin | 2012-01-26

2 Comentarios

  1. 18

    No trate de evitar 301 de almacenamiento en caché. Si usted no desea que ningún agente de usuario a la memoria caché de su redirección, entonces simplemente no usar un redireccionamiento 301. En otras palabras, 301 almacenamiento en caché está aquí para quedarse, y semánticamente, es un permanente redirigir, así que si estás pensando en cambiar la URL de destino, 301 no es el derecho de código de estado para su uso. Por otro lado, 307 respuestas no se almacenan en caché por defecto.

    Su interpretación viola la especificación de HTTP. Los clientes deben seguir Cache-Control cuando está presente en un 301.
    El RFC dice: «El 301 (redirección Permanente) código de estado indica que el destino de los recursos se ha asignado una nueva permanente URI», así que sí, eso significa que es permanente. Por supuesto, técnicamente se puede usar para otros propósitos, pero entonces estás haciendo mal uso de HTTP semántica.
    Estás leyendo demasiado en el nombre. Nada es para siempre. Los nombres de dominio se venden. Las empresas van a la quiebra. Incluso, existen limitaciones técnicas para la prevención de este: tools.ietf.org/html/draft-ietf-httpbis-p6-cache-24#page-28 [...] extremely large values have been demonstrated to cause problems [...] En conclusión: Forever sólo significa until the resource is deleted, or a reasonably long time.
    Hay un último punto que se está perdiendo: 301 es la única respuesta razonable para la URI de la canonización. Los códigos de 303 y 307 obligan a los clientes a repetir las solicitudes en el original URI (venciendo el punto de URI de la canonización): tools.ietf.org/html/… Since the redirection can change over time, the client ought to continue using the original effective request URI for future requests. URI canonicalización significa que los clientes deben ser capaces de utilizar la canónica de URI, en lugar de los alias que redirige a ellos. Los códigos de 303 y 307 prevenir esto.
    Tienes razón sobre una cosa: OP quiere redirigir sin almacenamiento en caché. En tal caso, 307 es una mejor solución. Sólo estoy diciendo que 301 con Cache-Control encabezados es perfectamente razonable y no debe ser descartado para otros usos.

    OriginalEl autor Mauricio Scheffer

  2. 9

    En situaciones donde se desea que el comportamiento que una redirección 301 trae, como la actualización de los marcadores del navegador y el cambio de URL en google bot, pero al mismo tiempo desea seguir el redireccionamientos o realizar algún otro tipo de funcionalidad que usted puede agregar siempre el control de la caché de los encabezados «no cache»

    HTTP/1.0 301 Moved Permanently
    Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
    Expires: Sat, 26 Jul 1997 05:00:00 GMT
    Location: http://example.com
    

    En php se parece a esto:

    header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
    header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
    header('Location:'.$url, true, 301);
    

    Relacionados con:
    https://stackoverflow.com/a/19003320/175071

    OriginalEl autor Timo Huovinen

Dejar respuesta

Please enter your comment!
Please enter your name here