2011-07-09 11 views
5

estamos trabajando para reducir el tráfico "inútil".enviando control de caché/expira/pragma con respuesta 404 - ¿válido/entendido por los navegadores modernos?

si enviamos encabezados de control de caché válidos (a-la "do cache") con una respuesta 404, ¿los cazadores modernos guardarán en caché que el recurso solicitado no existe?

utilizamos un controlador basado en php 404 personalizado que enviaba no encabezados de caché debido a la creación de la sesión, por lo que los eliminamos. pero ahora nos preguntamos si para los recursos estamos CIERTO no son válidos, ¿deberíamos enviar los encabezados de caché adecuados?

estos son recursos públicos btw accedidos por la misma uri por todos los usuarios.

gracias!

+1

Indique los encabezados de caché que configuró y cómo. – hakre

Respuesta

10

Los navegadores modernos tienen una implementación del HTTP Protocol, idealmente cerca del estándar, lo mismo para los servidores proxy que debe tener en cuenta si desea tener un efecto en el tráfico de bots no intencional o de usuario. La corriente version is 1.1, algunos extractos:

10,4 error 4xx cliente

La clase de código de estado 4xx se aplica a los casos en que el cliente parece haber errado. Excepto cuando se responde a una solicitud HEAD, el servidor DEBERÍA incluir una entidad que contenga una explicación de la situación de error, y si se trata de una condición temporal o permanente. Estos códigos de estado son aplicables a cualquier método de solicitud. Los agentes de usuario DEBERÍAN mostrar cualquier entidad incluida al usuario.

Si el cliente está enviando datos, una implementación del servidor utilizando TCP DEBERÍA tener cuidado de asegurar que el cliente acuse recibo de los paquetes que contienen la respuesta, antes de que el servidor cierre la conexión de entrada. Si el cliente continúa enviando datos al servidor después del cierre, la pila TCP del servidor enviará un paquete de reinicio al cliente, que puede borrar los búferes de entrada no reconocidos del cliente antes de que la aplicación HTTP pueda leerlos e interpretarlos.

Más específicamente para 404:

10.4.5 404 no encontrado

El servidor no ha encontrado nada que coincida con la Request-URI. No se indica si la condición es temporal o permanente. El código de estado 410 (Gone) DEBERÍA ser utilizado si el servidor sabe, a través de algún mecanismo configurable internamente, que un recurso antiguo está permanentemente no disponible y no tiene dirección de reenvío. Este código de estado se usa comúnmente cuando el servidor no desea revelar exactamente por qué se rechazó la solicitud o cuando no se aplica ninguna otra respuesta.

Mucho para el código de respuesta 404.

Se preguntó:

ahora [que] se preguntan si los recursos estamos seguros no son válidos, debemos enviar cabeceras de caché apropiadas?

No ha dado ningún encabezado de caché específico que le gustaría usar, por lo que es un poco impreciso responder a su pregunta. El almacenamiento en caché es una sección propia en la especificación de protocolo: 13 Caching in HTTP.

En general, el siguiente debe ser lo que estás buscando, extracto de 13.1.1 Cache Correctness:

Una caché correcta debe responder a una solicitud con la mayoría de la respuesta hasta a la fecha en poder de la memoria caché que es apropiado a la solicitud (ver secciones 13.2.5, 13.2.6 y 13.12), que se reúne una de las siguientes condiciones:

...

3. It is an appropriate 304 (Not Modified), 305 (Proxy Redirect), 
    or error (4xx or 5xx) response message. 

Para que pueda almacenar en caché los mensajes de respuesta 404 y enviarlos a caché. Proxies y Clientes deben manejarlo.

+0

sí, esto realmente tiene mucho sentido ... lo que terminaremos haciendo es a) si no hay encabezado if-modified-since, enviar encabezados de caché + página 404 personalizada, b) si es sí, encabezado if-modified-since, enviar 304 código de estado no modificado sin cuerpo. Gracias. –

+2

@ anonymous-one: Bueno, eso le dará HEAD recorridos de ida y vuelta para el script php 404 que no hace ningún comentario, ya que todavía se invocará. Si está realmente seguro de que el recurso no es válido, permita el almacenamiento en caché durante días y no haga nada como "si se ha modificado desde". Solo déjalo en la memoria caché. Si puede identificar el recurso que los usuarios realmente están buscando, use 410 Gone en su lugar o 302 movido con encabezado de ubicación y nueva ubicación en el cuerpo para que pueda mantener el enlace en los motores de búsqueda y recursos externos. Deje que la memoria caché de respuesta durante días también. – hakre

Cuestiones relacionadas