实现思路
- 选择缓存存储方式:可以使用内存缓存(如在应用程序中使用字典)或持久化缓存(如文件系统、数据库),内存缓存简单快速,适合短期缓存;持久化缓存能在应用重启后保留数据,适合长期缓存。
- 缓存数据结构:设计一个数据结构来存储缓存数据及其相关信息,如缓存时间戳、过期时间等。
- 判断缓存有效性:每次请求数据时,检查缓存中的数据是否过期,通过比较当前时间和缓存数据的过期时间来判断。
- 缓存过期处理:如果缓存过期,重新通过HttpClient获取数据,并更新缓存。
关键代码示例(以Python和requests库为例,模拟HttpClient)
import requests
import time
# 缓存数据结构
cache = {}
def get_data(url, cache_expiry=60):
if url in cache and time.time() - cache[url]['timestamp'] < cache_expiry:
# 缓存有效,直接返回缓存数据
return cache[url]['data']
else:
try:
# 缓存过期,重新获取数据
response = requests.get(url)
response.raise_for_status()
data = response.json()
# 更新缓存
cache[url] = {
'data': data,
'timestamp': time.time()
}
return data
except requests.RequestException as e:
print(f"请求出错: {e}")
return None
说明
cache
:一个字典,用于存储缓存数据,键为请求的URL,值为包含数据和时间戳的字典。
get_data
函数:
- 参数:
url
为请求的URL,cache_expiry
为缓存过期时间(秒),默认60秒。
- 缓存判断:检查URL是否在缓存中且缓存未过期,若满足则返回缓存数据。
- 缓存过期处理:重新发起HTTP请求获取数据,更新缓存并返回新数据。若请求出错,打印错误信息并返回
None
。