2010-10-16 10 views
17

Google App Engine debe tener algún tipo de proxy de caché inverso porque cuando configuro el encabezado de respuesta Cache-Control public, max-age=300 desde uno de mis servlets, las solicitudes posteriores al motor de la aplicación aparecen en los registros como este: /testcaching 204 1ms 0cpu_ms 49kb, mientras que las solicitudes no almacenadas en caché aparecen en los registros como: /testcaching 200 61ms 77cpu_ms 49kb.Detalles sobre el proxy de caché de Google App Engine?

De todos modos, mi pregunta es: ¿Alguien tiene más detalles sobre este proxy de almacenamiento en caché inverso?

+3

¿Qué tipo de detalles desea? Hay uno, está alojado en puntos finales cerca de su usuario, y almacena datos en caché si lo solicita . :) –

+0

@Nick - Gracias, esos son buenos detalles. Creo que me preguntaba si podría confiar en que almacenara en caché las cosas que le digo, y que no habría algún cambio en el motor de la aplicación en el futuro que elimina el proxy de almacenamiento en caché inverso. – Kyle

+2

Bueno, nunca se puede confiar completamente en el almacenamiento en caché, es un sistema intrínsecamente probabilístico, ya que sus datos podrían ser desalojados en cualquier momento. Ciertamente no tenemos planes de eliminarlo por completo en el futuro cercano, aunque. –

Respuesta

19

La mejor documentación que he encontrado sobre el proxy de caché de App Engine es a post to the App Engine group. Las partes relevantes se citan a continuación para la posteridad. Todo el crédito va a Brandon Wirtz:.

"Si quieres el almacenamiento en caché borde funcione es necesario para asegurarse de que usted ha hecho las siguientes cosas

  1. Conjunto público Si no se establece público no lo hará almacenarse en caché nunca.
  2. Establecer un máximo de edad. Si se establece público, pero no especifica max-age que no se almacenan en caché
  3. uso de una coma. public, max-age=300 funciona bien. Public; max-age=300 no.
  4. Conjunto una edad mayor a 60. 61 parece tener memoria caché. 60 no. Probablemente haya alguna el volumen se almacenará en caché en función de la caducidad, pero 61 segundos en los volúmenes que ejecutamos 61 parece caché y 60 parece que nunca.
  5. Establecer una edad inferior a 366 días. 364 días parece funcionar. 365 funciona la mayor parte del tiempo. 366 nunca parece funcionar. Por lo tanto, esos tipos de publicaciones de "Caducar nunca" se refieren a los activos versionados que nunca caducan. Bueno, 10 años no es la respuesta correcta.
  6. Caduca con una fecha no parece ayudar, y aparentemente puede evitar el almacenamiento en caché en algunos casos. Creo que esto puede ser un cambio de reloj. O algo sobre cuán exigente es el analizador sobre el formato de la fecha. Las cosas que funcionan en los navegadores no siempre funcionan correctamente en el edgecache ... (como el Semi frente a la coma)
  7. Establezca Pragma y Cache-Control. Si Pragma no está configurado como público, el control de caché parece ignorado. "