Utiliser le cache HTTP en Python

Lorsque vous créez un robot d'exploration, vous devez garder à l'esprit l'exécution itérative. Par conséquent, je suis préoccupé par le cache du site à la destination du robot d'exploration.

Même si vous l'exécutez à nouveau avec le cache appliqué, les données qui peuvent être acquises en affichant la même page sont les mêmes.

Cette fois, je voudrais résumer le cache HTTP en Python.

Cache HTTP

Le cache HTTP est défini dans la RFC7234. En ajoutant un en-tête lié à la mise en cache à la réponse, le serveur HTTP peut ajouter au client HTTP et instruire la politique de mise en cache du contenu.

En-tête HTTP Right align
Cache-Control Instructions détaillées sur la politique de mise en cache, par exemple si le contenu peut être mis en cache
Expires Indique la date d'expiration du contenu
Etag Représente un identificateur de contenu. La valeur d'Etag change à mesure que le contenu change
Last-Modified Représente la dernière date et heure de mise à jour du contenu
Pragma Cache-Similaire à Control, mais est maintenant laissé pour la compatibilité descendante uniquement
Vary Indique que la réponse renvoyée par le serveur change lorsque la valeur de l'en-tête de demande inclus dans la valeur change.

Une trésorerie solide

Une fois que le client met en cache la réponse, il n'envoie pas de demande jusqu'à ce qu'elle expire et utilise la réponse mise en cache.

Cache faible

Une fois que le client a mis en cache la réponse, il enverra une demande conditionnelle la prochaine fois, et le serveur renverra un corps de réponse vide avec un code d'état 304 s'il n'y a pas de mises à jour.

Utiliser le cache HTTP en Python

import requests
from cachecontrol import CacheControl 
from cachecontrol.caches import FileCache

session = requests.Session()
#session d'encapsulation en cache_Faites une session.
#Cache en tant que fichier.Enregistrez dans le répertoire webcache.
cached_session = CacheControl(session, cache=FileCache('.webcache'))

response = cached_session.get('URL') 

# response.from_Vous pouvez obtenir la réponse obtenue du cache avec l'attribut cache.
print(f'from_cache: {response.from_cache}') 
print(f'status_code: {response.status_code}')

À partir de la deuxième fois, le contenu mis en cache sera renvoyé.

Recommended Posts

Utiliser le cache HTTP en Python
Utilisez config.ini avec Python
Requête HTTP en Python
Utiliser des dates en Python
Utiliser Valgrind avec Python
Utiliser le profileur en Python
Voyons comment utiliser def en python
Utiliser l'expression let en Python
Utiliser le magasin de paramètres en Python
Utilisez l'ODM de MongoDB avec Python
Utiliser un dict clé de liste en Python
Utiliser Random Forest avec Python
Utilisez Spyder de Python IDE
Utilisez le tissu tel quel en python (fabric3)
Ecrire un serveur HTTP / 2 en Python
Comment utiliser SQLite en Python
Utiliser rospy avec virtualenv dans Python3
Comment utiliser Mysql avec python
Utiliser Python mis en pyenv avec NeoVim
Comment utiliser ChemSpider en Python
Comment utiliser PubChem avec Python
Utiliser OpenCV avec Python 3 dans Window
Quadtree en Python --2
Python en optimisation
CURL en Python
Métaprogrammation avec Python
Python 3.3 avec Anaconda
Géocodage en python
SendKeys en Python
Utiliser l'impression dans l'expression lambda Python2
Un client HTTP simple implémenté en Python
Méta-analyse en Python
Unittest en Python
Utilisez facilement vos propres fonctions en Python
Époque en Python
Discord en Python
Allemand en Python
DCI en Python
tri rapide en python
nCr en python
N-Gram en Python
Programmation avec Python
Un moyen simple d'utiliser Wikipedia avec Python
Plink en Python
Constante en Python
N'utilisez pas \ d dans les expressions régulières Python 3!
FizzBuzz en Python
Comment utiliser __slots__ dans la classe Python
Sqlite en Python
Étape AIC en Python
LINE-Bot [0] en Python
CSV en Python
Assemblage inversé avec Python
Réflexion en Python
Constante en Python
Utilisez pathlib dans Maya (Python2.7) en préparation du prochain Python3.7
nCr en Python.