当前位置: 首页 > news >正文

一个网站是如何知道是谁来访问网站前台的功能模块

一个网站是如何知道是谁来访问,网站前台的功能模块,网站建设服务器的选择方式包括哪些,建设厅官方网站下载专区目录 核心特性使用方法1. 基本用法2. 参数说明 缓存清理方法1. 清空整个缓存2. 手动淘汰旧缓存 实用技巧1. 查看缓存状态2. 类型敏感缓存3. 缓存无参函数 完整示例使用场景LRU Cache 在 API 中的清理操作影响范围关键结论#xff1a;示例演示#xff1a;API 中的缓存隔离场景… 目录 核心特性使用方法1. 基本用法2. 参数说明 缓存清理方法1. 清空整个缓存2. 手动淘汰旧缓存 实用技巧1. 查看缓存状态2. 类型敏感缓存3. 缓存无参函数 完整示例使用场景LRU Cache 在 API 中的清理操作影响范围关键结论示例演示API 中的缓存隔离场景两个 API 端点使用相同计算函数但不同缓存策略 测试步骤及结果重要注意事项最佳实践建议 lru_cache 是 Python 标准库 functools 模块提供的装饰器用于实现 LRULeast Recently Used缓存策略。它会自动缓存函数的计算结果当使用相同的参数再次调用时直接返回缓存结果避免重复计算。 核心特性 LRU 策略当缓存达到容量上限时自动淘汰 最久未使用 的结果线程安全适合多线程环境性能提升特别适用于计算密集型函数 使用方法 1. 基本用法 from functools import lru_cachelru_cache(maxsize128) # 设置缓存容量 def factorial(n):print(f计算 {n} 的阶乘)return 1 if n 1 else n * factorial(n-1)print(factorial(5)) # 首次计算会递归调用 print(factorial(5)) # 直接返回缓存结果输出 计算 5 的阶乘 计算 4 的阶乘 计算 3 的阶乘 计算 2 的阶乘 计算 1 的阶乘 120 120 # 无计算过程输出2. 参数说明 lru_cache(maxsizeNone, typedFalse)maxsize缓存容量默认128 None无限缓存慎用0禁用缓存 typed是否区分参数类型默认False True1int和 1.0float视为不同参数 缓存清理方法 1. 清空整个缓存 factorial.cache_clear() # 清空所有缓存2. 手动淘汰旧缓存 通过“伪调用”触发 LRU 淘汰 lru_cache(maxsize3) def square(x):return x * xsquare(1) # 缓存 [1] square(2) # 缓存 [1, 2] square(3) # 缓存 [1, 2, 3] square(4) # 淘汰最旧的1 → 缓存 [2, 3, 4]实用技巧 1. 查看缓存状态 print(square.cache_info())输出示例 CacheInfo(hits3, misses5, maxsize3, currsize3)hits缓存命中次数misses缓存未命中次数currsize当前缓存数量 2. 类型敏感缓存 lru_cache(typedTrue) def type_sensitive(x):return type(x)print(type_sensitive(1)) # class int print(type_sensitive(1.0)) # class float (视为不同调用)3. 缓存无参函数 lru_cache() def get_config():return load_from_database() # 只执行一次完整示例 from functools import lru_cache import timelru_cache(maxsize3) def heavy_calculation(n):print(f执行耗时计算: {n})time.sleep(1)return n ** 2# 首次调用 print(heavy_calculation(2)) # 执行计算 print(heavy_calculation(3)) # 执行计算 print(heavy_calculation(2)) # 使用缓存# 触发缓存淘汰 print(heavy_calculation(4)) # 执行计算 → 缓存[2,3,4] print(heavy_calculation(5)) # 执行计算 → 淘汰2 → 缓存[3,4,5]# 查看缓存状态 print(heavy_calculation.cache_info()) # 输出: CacheInfo(hits1, misses4, maxsize3, currsize3)# 清空缓存 heavy_calculation.cache_clear() print(heavy_calculation.cache_info()) # 输出: CacheInfo(hits0, misses0, maxsize3, currsize0)使用场景 递归函数优化如斐波那契数列数据转换/解析函数配置加载等IO操作计算成本高的纯函数 注意不适合用于 非确定性函数如随机数生成有副作用的函数参数不可哈希的函数如列表、字典 LRU Cache 在 API 中的清理操作影响范围 在 Python 的 lru_cache 中缓存是函数级别的清理操作只会影响调用它的特定函数实例不会影响其他函数或模块的缓存。 关键结论 每个函数有独立缓存不同函数的缓存相互隔离清理操作只影响当前函数调用 func.cache_clear() 只清理该函数的缓存同函数不同实例不共享缓存相同函数的不同装饰器实例有独立缓存 示例演示API 中的缓存隔离 场景两个 API 端点使用相同计算函数但不同缓存策略 from functools import lru_cache from fastapi import FastAPIapp FastAPI()# 端点1使用小型缓存 lru_cache(maxsize2) def calculate_small(n: int):print(f小型缓存计算: {n})return n * n# 端点2使用大型缓存 lru_cache(maxsize10) def calculate_large(n: int):print(f大型缓存计算: {n})return n * napp.get(/small/{n}) async def small_endpoint(n: int):return {result: calculate_small(n)}app.get(/large/{n}) async def large_endpoint(n: int):return {result: calculate_large(n)}app.get(/clear-small) async def clear_small_cache():calculate_small.cache_clear()return {message: 小型缓存已清空}app.get(/clear-large) async def clear_large_cache():calculate_large.cache_clear()return {message: 大型缓存已清空}测试步骤及结果 首次调用小型端点 GET /small/3 → 输出 “小型缓存计算: 3” 再次调用相同参数 GET /small/3 → 无计算输出命中缓存 调用大型端点相同参数 GET /large/3 → 输出 “大型缓存计算: 3” 证明两个函数缓存独立 清理小型缓存 GET /clear-small → 返回清空消息 再次调用小型端点 GET /small/3 → 重新输出 “小型缓存计算: 3”缓存失效 大型端点不受影响 GET /large/3 → 无计算输出缓存仍然有效 重要注意事项 多进程环境 在 Gunicorn/Uvicorn 等多进程部署中每个工作进程有独立缓存 → 清理操作只影响当前工作进程的缓存 解决方案 # 广播清理信号给所有进程示例 app.get(/clear-all) async def clear_all():# 通过消息队列或共享存储通知所有进程broadcast_clear_signal()return {message: 已发送全局清理指令}类方法缓存 类中的不同实例共享同一个缓存除非使用实例方法 class Calculator:classmethodlru_cachedef compute(cls, n): # 所有实例共享缓存return n * n模块级缓存 同一模块内的多次装饰会创建不同缓存 # module_a.py lru_cache def func(): ... # 缓存A# module_b.py from module_a import func lru_cache def wrapper(): # 缓存B与func的缓存无关return func()最佳实践建议 按需清理只清理需要更新的函数缓存添加清理端点为关键缓存函数提供专用清理API监控缓存定期检查 cache_info() 防止内存泄漏设置合理大小避免 maxsizeNone 导致无限增长跨进程协调在分布式系统中使用 Redis 等集中式缓存替代
http://www.dnsts.com.cn/news/239221.html

相关文章:

  • 宁波网站建设公司在哪里宝应吧 百度贴吧
  • 视频直播网站如何做大连哪家网站技术开发公司好
  • 经三路专业做网站个人服务器搭建做网站
  • 网站建设策划需要涉及免费公司网址怎么注册
  • 哪个网站域名解析wordpress 规则
  • 网站设计的国际专业流程包括搭建购物网站
  • 专业的东莞网站推广广告网站设计公司好吗
  • 企业网站托管电话简单建设企业办公网站
  • 网站模版设计最美情侣高清视频播放
  • 怎么把网站关掉cms影视系统
  • 网站与微信结合工程建设最好的网站
  • 做网站分为哪几个岗位金融系统网站模板
  • 音乐网页设计素材百度seo在线优化
  • 广东网站开发费用网站建设理论依据
  • 网站切片怎么做seo专业术语
  • 电子商务网站建设与完整实例wordpress 云解析视频教程
  • 网站建设与网站优化深入解析wordpress 原书第2版 pdf
  • 国外网站卖货平台工程公司注册经营范围
  • 课程注册 网站开发怎么做游戏网站
  • 建设银行网站为什么进不去创建网站是怎么赚钱
  • 网站备案是在哪里查wordpress折叠代码
  • 健身会所网站模板泉州优化怎么做seo
  • 网站优化标题不超过多少个字符网站建设运城
  • 太原有网站工程公司吗建设和交通局网站
  • 装饰公司网站建设html5 metro风格网站模板
  • 企业建设网站能否报销seo优化就业前景
  • 四川省建设厅中心网站信息服务平台网站名称
  • 哈尔滨网站设计模板网站模板备份
  • 银川网站网站建设优秀网站网页设计分析
  • 网站建设协议 合同中文网站后台