2010-05-06 18 views

Respuesta

25

He visto esto antes en App Engine, incluso cuando utilizo parámetros de consulta de prevención de almacenamiento en memoria caché como /stylesheets/default.css?{{ App.Version }}.

Aquí es mi teoría (sin confirmar):

  1. Se empuja una nueva versión mediante el despliegue o el cambio de una nueva versión de default.
  2. Mientras esta actualización se propaga a todas las instancias de GAE que ejecutan su aplicación ...
  3. ... alguien llega a su sitio.
  4. La solicitud del recurso estático default.css{{ App.Version }} se envía al CDN de Google, que aún no la tiene.
  5. Google's CDN pregunta a GAE por el recurso antes de que la propagación desde el paso 2 se realice para todas las instancias.
  6. Si tiene mala suerte, GAE sirve el recurso de una instancia que ejecuta la versión anterior ...
  7. ... que ahora se almacena en caché en el CDN de Google como la "nueva" versión autorizada.

Cuando sucede esto (si esto es lo que sucede), puedo confirmar que no funcionará ninguna cantidad de trabajo de búsqueda de memoria caché. Los servidores de Google CDN tienen una versión incorrecta.

Para solucionar: La única forma que he encontrado para solucionar esto es implementar otra versión. No corre el riesgo de que esto vuelva a suceder (si no ha realizado ningún cambio de CSS desde la condición de carrera), porque incluso si se produce la condición de carrera, es de suponer que su primera actualización se realizará cuando implemente la segunda, por lo que todas las instancias estarán publicando la versión correcta sin importar qué.

+0

Compraré esto ... aunque no estoy seguro de que sea correcto. Finalmente se aclaró horas después. –

+0

Estoy enfrentando el mismo problema. En mi caso, incluso después de salir de la noche a la mañana, el nuevo css no se servía. Voy a probar la técnica de estallido de memoria caché – coderman

+0

La estoy encontrando ahora. Implementé muchas, muchas veces, pero sigue publicando archivos estáticos desactualizados. Sin embargo, si hago referencia a la versión de la aplicación, por ejemplo, alpha5.latest.xxx.appspot.com, se publica el archivo correcto. – mainsocial

2

Tu enlace se ve bien para mí, a menos que me falta algo.

Es posible que haya guardado en caché su CSS anterior y no obtenga el nuevo CSS después de actualizarlo. Intente borrar el caché de su navegador y vea si eso funciona.

Ir a 1.latest descarga el nuevo CSS ya que no está en su caché, por lo que le aparece correctamente.

+0

El menú en la parte inferior del menú no es horizontal o lo suficientemente grande, y las imágenes en la presentación de diapositivas son incorrectas. Intenté actualizar mi caché y cargar desde otro navegador también. –

+0

Los dos sitios que vinculó se ven exactamente iguales en Firefox y Chrome para OS X. Sospecho que todavía hay algún problema que solo le afecta a usted, o a su navegador, a menos que alguien más pueda verificar que se ve diferente. –

+0

Intente utilizar + para forzar la recarga de su página (al menos en FF). Aquí todo parece estar bien, tanto el menú como las imágenes de diapositivas. Buena suerte. – Emilien

3

A continuación, lo que funcionó para mí.

  1. Sirva su archivo CSS desde el dominio estático. Esto es creado automáticamente por GAE.

    //static.{your-app-id}.appspot.com/{css-file-path}

  2. desplegar su aplicación. En este punto, tu aplicación se romperá.

  3. cambio de la versión del archivo css

    //static.{your-app-id}.appspot.com/{css-file-path}?v={version-Name}

  4. implementar de nuevo.

Cada vez que cambie el archivo css. deberás repetir 2,3 y 4.

0

Intenta borrar el caché en tu navegador. Tenía el mismo problema y lo solucioné simplemente borrando el caché.

1

Tuve este problema también. Estaba usando un matraz con GAE, así que no tenía un controlador estático en mi app.yaml. Cuando lo agregué, el despliegue funciona. Trate de añadir algo como esto

handlers: 
- url: /static 
    static_dir: static 

a su app.yaml y desplegar de nuevo. Funcionó para mí Aparentemente, Google está tratando de optimizar al no actualizar los archivos que cree que los usuarios no pueden ver.

0

Aquí cuál funcionó para mí:

En primer lugar, he cambiado la versión en app.yaml.

continuación, siga estos pasos

Ir a la consola -> Haga clic en su proyecto.

En el menú lateral, haga clic en Computación ->Versiones:

No será todas las versiones, y qué versión es por defecto. El mío fue establecido en una versión anterior.

Marque la nueva versión.

Para mí funcionó. ¿Cualquier duda?