[업무 지식]/Crawling
[CacheControl] 변경된 데이터만 추출하기
by 에디터 윤슬
2025. 1. 1.
캐시와 관련된 HTTP 헤더
HTTP 헤더 |
설명 |
Last-Modified |
콘텐츠의 최종 변경일을 나타냅니다 |
ETag |
콘텐츠의 식별자를 나타냅니다. 콘텐츠가 변경되면 ETag의 값도 함께 바뀌게 됩니다 |
Cache-Control |
콘텐츠를 캐시해도 괜찮은지 등의 캐시 방침을 나타냅니다 |
Pragma |
Cache-Control과 비슷한 것이었지만 현재는 하위 호환성 때문에 남아 있습니다 |
Expires |
콘텐츠의 유효 기간을 나타냅니다 |
CacheControl을 사용해 캐시 처리하기
import requests
# pip install CacheControl
from cachecontrol import CacheControl
session = requests.session()
# session을 래핑한 cached_session 만들기
cached_session = CacheControl(session)
# 첫 번째는 캐시돼 있지 않으므로 서버에서 추출한 이후 캐시합니다.
response = cached_session.get('https://docs.python.org/3/')
print(response.from_cache) # False
# 두 번째는 ETag와 Last-Modified 값을 사용해 업데이트됐는지 확인합니다.
# 변경사항이 없는 경우에는 콘텐츠를 캐시에서 추출해서 사용하므로 빠른 처리가 가능합니다.
response = cached_session.get('https://docs.python.org/3/')
print(response.from_cache) # True