


Cache Web: un aspect crucial, mais excentrique du développement Web. Entre votre navigateur et le serveur se trouve un réseau complexe de caches, optimisant silencieusement le trafic Internet. Cependant, ce système même peut introduire des incohérences déroutantes si elle n'est pas soigneusement gérée.
Prise des clés:
- La mise en cache Web repose fortement sur les codes et les en-têtes d'état HTTP (comme
Last-Modified
,Etag
, etCache-Control
).Cache-Control
est primordial, offrant des options telles queno-store
,no-cache
,public
,private
, etmax-age
. - Chrome et Edge présentent des comportements uniques. Pour éviter les conflits de mise en cache, en particulier avec les appels AJAX, utilisez des URL distinctes pour le contenu de la page et les données AJAX. Cela évite le scénario où Cached JSON remplace Html.
- Les certificats SSL auto-signés perturbent la mise en cache dans Chrome et les navigateurs similaires. Ils désactivent efficacement la mise en cache, conduisant à des écarts entre les tests locaux et les déploiements en direct.
Gestion de l'en-tête HTTP:
Le comportement de mise en cache est dicté par les codes de statut HTTP et les en-têtes. Un navigateur / proxy servira soit des données mises en cache, vérifiera la fraîcheur des données avec le serveur ou récupérera de nouvelles données. L'en-tête Cache-Control
est la clé:
-
no-store
ouno-cache
:no-store
empêche toute mise en cache;no-cache
permet au navigateur / proxy de vérifier auprès du serveur en utilisantLast-Modified
et / ouEtag
avant de servir des données mises en cache. -
public
ouprivate
:public
permet de mettre en cache partout;private
restreint la mise en cache au navigateur de l'utilisateur. -
max-age
: Spécifie la période de validité du cache en secondes.
Exemple (php):
header('Cache-Control: private,max-age=30'); echo json_encode($data);
Exemple (node.js / express):
res .set('Cache-Control', 'private,max-age=30') .json(data);
URL distinctes pour les pages et les données ajax:
Même avec des paramètres d'en-tête appropriés, les incohérences du navigateur peuvent survenir, en particulier lors de l'utilisation du bouton de retour. Chrome et Edge pourraient revenir à l'état de page initial, tandis que Firefox et Safari conservent le dernier état connu.
Considérons une table paginée:
- Chargement de la page initiale:
http://myapp.com/list/
- Ajax Navigation: L'URL change (par exemple,
http://myapp.com/list/?search=bob&page=42
), mais Ajax met à jour le dom.
Si l'appel Ajax utilise la même URL, Chrome / Edge peut servir JSON en cache au lieu de HTML lorsque le bouton arrière est enfoncé. La solution: utilisez des URL séparées pour les demandes de page et ajax (par exemple, ajouter &ajax=1
à l'URL AJAX). Cela garantit une mise en cache indépendante.
Le péril des certificats SSL auto-signés:
Bien que pratique pour le développement, les certificats auto-signés empêchent le chrome (et probablement d'autres navigateurs basés sur des clignotements) de mettre en cache les données de la page. Cela crée des incohérences entre les tests locaux (pas de mise en cache) et les déploiements en direct (mise en cache activé).
Questions fréquemment posées (FAQ):
La section FAQ fournie reste largement inchangée, car elle offre des informations précieuses sur la mise en cache des meilleures pratiques et le dépannage. Le contenu est déjà bien structuré et répond aux préoccupations communes liées à la mise en cache des réponses JSON et aux stratégies globales de développement Web.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Le développement de logiciels de télécommunications personnalisés est sans aucun doute un investissement considérable. Cependant, à long terme, vous pouvez réaliser qu'un tel projet peut être plus rentable car il peut augmenter votre productivité comme toute solution prête à l'emploi sur le marché. Comprendre les avantages les plus importants de la construction d'un système de télécommunications personnalisé. Obtenez les fonctionnalités exactes dont vous avez besoin Il y a deux problèmes potentiels avec le logiciel de télécommunications standard que vous pouvez acheter. Certaines manquent de fonctionnalités utiles qui peuvent améliorer considérablement votre productivité. Parfois, vous pouvez les améliorer avec une certaine intégration externe, mais cela ne suffit pas toujours pour les rendre excellents. D'autres logiciels ont trop de fonctions et sont trop compliqués à utiliser. Vous n'en utilisez probablement pas (jamais!). Un grand nombre de fonctionnalités ajoute généralement au prix. En fonction de vos besoins

Puzzles CI / CD et solutions pour les logiciels open source dans l'architecture ARM64 Le déploiement de logiciels open source sur l'architecture ARM64 nécessite un environnement CI / CD puissant. Cependant, il existe une différence entre les niveaux de soutien des architectures de processeur ARM64 et traditionnelles x86, qui sont souvent désavantagées. Les développeurs de composants d'infrastructure pour plusieurs architectures ont certaines attentes pour leur environnement de travail: Cohérence: les outils et méthodes utilisés sur les plateformes sont cohérents, évitant la nécessité de modifier le processus de développement en raison de l'adoption de plateformes moins populaires. Performances: La plate-forme et le mécanisme de support ont de bonnes performances pour garantir que les scénarios de déploiement ne sont pas affectés par une vitesse insuffisante lors de la prise en charge de plusieurs plates-formes. Couverture de test: efficacité, conformité et

Restez informé des dernières tendances technologiques avec ces meilleurs bulletins de développeur! Cette liste organisée offre quelque chose pour tout le monde, des amateurs d'IA aux développeurs assaisonnés du backend et du frontend. Choisissez vos favoris et gagnez du temps à la recherche de rel

Ce tutoriel vous guide dans la création d'un pipeline de traitement d'image sans serveur à l'aide de services AWS. Nous allons créer un frontend Next.js déployé sur un cluster ECS Fargate, en interagissant avec une passerelle API, des fonctions lambda, des seaux S3 et DynamoDB. Ème

Ce programme pilote, une collaboration entre le CNCF (Cloud Native Computing Foundation), Ampere Computing, Equinix Metal et ACTUTIE, rationalise ARM64 CI / CD pour les projets GitHub CNCF. L'initiative répond aux problèmes de sécurité et aux performances LIM


Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Dreamweaver Mac
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Version crackée d'EditPlus en chinois
Petite taille, coloration syntaxique, ne prend pas en charge la fonction d'invite de code

MinGW - GNU minimaliste pour Windows
Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.

Listes Sec
SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.
