Question

Je poussé une nouvelle version de mon site, mais maintenant les images CSS et statiques ne sont pas correctement déployer.

Voici la page foiré: http://www.gaiagps.com

Appengine montre la dernière version comme étant correcte si: http: //1.latest.gaiagps.appspot .com /

Toute aide?

Était-ce utile?

La solution

Je l'ai vu ceci avant sur App Engine, même lors de l'utilisation des paramètres de requête de contournement du cache comme /stylesheets/default.css?{{ App.Version }}.

Voici mon (non confirmée) la théorie:

  1. Vous poussez une nouvelle version en déployant ou en changeant une nouvelle version à default.
  2. Bien que cette mise à jour est propagée à toutes les instances en cours d'exécution GAE votre application ...
  3. ... quelqu'un frappe votre site.
  4. La demande de default.css{{ App.Version }} de ressource statique est envoyée à CDN de Google, qui n'a pas encore avoir.
  5. CDN de Google demande GAE pour la ressource avant la propagation de l'étape 2 est fait pour tous les cas.
  6. Si vous êtes malchanceux, GAE sert la ressource d'une instance en cours d'exécution l'ancienne version ...
  7. ... qui obtient maintenant mises en cache dans CDN Google comme faisant autorité "nouvelle" version.

Lorsque cela (si cela est ce qui se passe) arrive, je peux confirmer qu'aucune quantité de travail du navigateur cache-busting vous aidera. Les serveurs Google CDN tiennent la mauvaise version.

Pour résoudre: La seule façon que j'ai trouvé pour résoudre ce problème est de déployer une autre version. Vous ne courez pas le risque de ce qui se passe à nouveau (si vous ne l'avez pas fait des changements CSS depuis la condition de la course), parce que même si la condition de la course se produit, probablement votre première mise à jour est effectuée au moment où vous déployez votre deuxième, de sorte que tous les cas seront au service de la version correcte peu importe.

Autres conseils

Après est ce qui a fonctionné pour moi.

  1. Servez votre fichier css du domaine statique. Ceci est créé automatiquement par GAE.

    // statique. {Votre-app-id} .appspot.com / {css-file-path}

  2. Déployer votre application. A ce stade, votre application sera brisée.

  3. changer la version du fichier css

    // statique. {Votre-app-id} .appspot.com / {css-file-path}? V = {version Nom}

  4. déployer à nouveau.

Chaque fois que vous modifiez le fichier css. vous devrez répéter 2,3 et 4.

Votre lien semble bien à moi, à moins que je me manque quelque chose.

Vous avez sans doute mis en cache votre ancien CSS, et ne pas obtenir le nouveau CSS après sa mise à jour. Essayez d'effacer le cache de votre navigateur et voir si cela fonctionne.

Aller à 1.latest téléchargements le nouveau CSS car il est pas dans votre cache, de sorte qu'il apparaît correctement vous.

J'ai eu ce problème aussi bien. J'utilisais flacon avec GAE donc je n'ai pas un gestionnaire statique dans mon app.yaml. Quand je l'ai ajouté, le Déployez fonctionne. Essayez d'ajouter quelque chose comme ceci

handlers:
- url: /static
  static_dir: static

à votre app.yaml et encore Deploy. Il a travaillé pour moi. Apparemment, Google tente d'optimiser la mise à jour de ne pas les fichiers qu'il pense les utilisateurs ne peuvent pas voir.

Comme trouvé par shoresh , la documentation pour l'environnement standard pour l'état Pyhton que les paramètres de Google Cloud Console et ouvrez votre projet. Dans le menu hamburger gauche, à la tête de stockage -> Navigateur. Il vous faut trouver au moins un godet: your-project-name.appspot.com. Dans la colonne du cycle de vie, cliquez sur le lien par rapport à your-project-name.appspot.com. Supprimez toutes les règles existantes, car ils peuvent entrer en conflit avec celui que vous allez créer maintenant.

Créer une nouvelle règle en cliquant sur le bouton « Ajouter une règle ». Pour les conditions d'objet, choisissez uniquement « Une version plus récente » option et réglez-le sur 1. Ne pas oublier de cliquer sur le bouton « Continuer ». Pour l'action, sélectionnez « Supprimer », puis cliquez sur le bouton « Continuer ». Enregistrez votre nouvelle règle.

Cette règle nouvellement créée prendra jusqu'à 24 heures pour prendre effet, mais au moins pour mon projet il a fallu seulement quelques minutes. Une fois qu'il est en cours d'exécution, la version des fichiers servi par votre application sous your-project-name.appspot.com sera toujours le dernier déployé , la résolution du problème. En outre, si vous modifiez régulièrement vos fichiers statiques, vous devez supprimer l'élément default_expiration du fichier app.yaml, qui permettra d'éviter la mise en cache involontaire par d'autres serveurs.

Voici ce qui est travaillé pour moi:

D'abord, je l'ai changé la Version sur app.yaml .

Suivez ensuite les étapes ci-dessous

Accédez à votre console -.> Cliquez sur votre projet

Dans le menu latéral, cliquez sur Calcul -> Versions :

ce sera toutes les versions, et quelle est la version par défaut. Le mien a été mis à une version plus ancienne.

Marquer la nouvelle version.

Pour moi travaillé. Les préoccupations?

De la documentation pour l'environnement standard pour Pyhton: static_cache_expiration .

  

Après un fichier est transmis avec un temps d'expiration donnée, il y a   généralement aucun moyen de le vider des caches intermédiaires, même si   utilisateur efface leur propre cache du navigateur. Re-déploiement d'une nouvelle version du   l'application ne sera pas réinitialiser les caches. Par conséquent, si jamais vous envisagez de modifier un   fichier statique, il devrait avoir un court (moins d'une heure) expiration   temps. Dans la plupart des cas, le délai d'expiration par défaut de 10 minutes est   approprié.

Pour de nouvelles personnes qui viennent à ce vieilles questions / série de réponses que je voulais donner une réponse à jour. Je pense à 2018-19 les informations suivantes probablement résoudre la plupart des problèmes de mise à jour CSS Les gens ont:

Assurez-vous que votre app.yaml a ce qui suit:

 handlers:
   - url: /static
     static_dir: static
  • Exécuter gcloud app deploy
  • Réfrigérer pendant 10 minutes .. et le décalage reload votre site

Ok Pour les nouveaux voyant ce problème j'ai essayé l'approche de cache-éclatement et semble avoir fixé ici est un exemple de ce que je l'ai fait pour l'importation css sur fichier app.cfg créer une variable pour tenir votre appid comme ensemble dans fichier app.yaml et défini comme celui ci-dessous

<link href="{{ url_for('static', filename='file.css') }}?{{config.APP_ID}}" rel="stylesheet"> 

De même pour le fichier app.yaml ajouter cette configuration pour être du bon côté

Chariot:

  • url: / statique static_dir: statique

Essayez cache de compensation sur votre navigateur. Eu exactement le même problème et il a obtenu fixé par le cache de compensation simplement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top