MapProxy的refresh_before选项失效问题求助
MapProxy refresh_before 配置失效原因分析(v5.0.0)
针对你遇到的层级16的refresh_before(2分钟)不生效问题,结合配置和命令,从以下核心点排查:
1. 对refresh_before的作用理解有误
refresh_before不是控制两次seed进程的执行间隔,它的核心作用是:当缓存瓦片的「过期时间」与当前时间的差值小于设置的时长时,seed才会触发该瓦片的重新生成。它是瓦片刷新的判断阈值,而非进程定时执行的间隔配置。
2. mapproxy-seed默认是一次性执行
你当前的启动命令是单次执行seed任务,进程跑完就退出,不会自动重复执行。如果需要周期性触发缓存刷新,必须借助系统定时任务实现:
- Linux:用cron定时调用
mapproxy-seed命令 - Windows:通过任务计划程序定期执行命令
3. 缺失缓存expires配置
refresh_before依赖缓存的expires选项工作——它需要基于瓦片的过期时间来计算是否需要刷新。检查你的mp_alkis.yaml中adv_alkis_tatsaechliche_Nutzung_Cache的配置,必须设置expires(单位:秒),例如:
caches: adv_alkis_tatsaechliche_Nutzung_Cache: sources: [你的WMS源配置] expires: 3600 # 示例:设置缓存1小时后过期
如果没有配置expires,refresh_before没有判断依据,自然不会生效。
4. 瓦片未达到刷新触发条件
即使配置正确,只有当目标层级(16)的瓦片距离过期时间小于2分钟时,seed才会重新生成这些瓦片。如果你的瓦片都是刚生成的,距离过期时间还很远,seed执行时不会进行任何刷新操作,看起来就像配置失效。
内容的提问来源于stack exchange,提问作者TEC HIB
相关产品推荐
相关产品推荐

