chen3861229 / embyExternalUrl

some emby/jellyfin scripts
MIT License
115 stars 17 forks source link

因为缓存修改封面不生效问题 #54

Closed anyingxiuluo closed 2 months ago

anyingxiuluo commented 2 months ago

大佬这个是什么意思,没看懂

1.默认已经新增了指令 proxy_cache_bypass,自己编辑下该海报的访问接口添加 URL 参数 nocache=1,跳过该缓存后重新访问将覆盖旧缓存

chen3861229 commented 2 months ago

受限于 nginx 的更新缓存模块(proxy_cache_purge)为收费的,有第三方编译的免费的,但是这样增加了复杂度,所以这个折中操作目前稍显麻烦且批量起来麻烦,批量建议直接清空缓存目录来得简单,因为缓存默认只有 30 天,影响不大,以下为不清空缓存目录的单条覆盖更新缓存的具体操作步骤

1.使用可以打开控制台的浏览器,切换到网络选项卡,找到此封面的接口地址,类似于 https://xxx:8096/emby/Items/437905/Images/Primary?tag=7c509b30054f211a73bcd9f4ad7ab02a&quality=90&maxWidth=251

2.然后将此地址手动添加跳过缓存的参数,nocache=1 https://xxx:8096/emby/Items/437905/Images/Primary?tag=7c509b30054f211a73bcd9f4ad7ab02a&quality=90&maxWidth=251& nocache=1

3.将新地址放到新标签页中访问一下,然后再刷新原标签页的页面,就会覆盖掉旧缓存了

anyingxiuluo commented 2 months ago

感谢解答,但是我缓存的是手机端的封面,去浏览器端刷新页面没用吧

chen3861229 commented 2 months ago

1.这个如果是默认的配置,不会这样,以下配置除了 1 是不同尺寸的设备 emby 原始是做了缩放图片的操作的,也就是 URL 中 &quality=90&maxWidth=251 这样的参数,所以 nginx 缓存文件也是分开的,0 和 2 都是所有设备(不同屏幕尺寸)的共用一份缓存,因为脚本默认移除了原始的缩放图片的参数,我这边日常是设置为 2 在用

// 图片缓存策略,包括主页、详情页、图片库的原图,路由器 nginx 请手动调小 conf 中 proxy_cache_path 的 max_size
// 0: 不同尺寸设备共用一份缓存,先访问先缓存,空间占用最小但存在小屏先缓存大屏看的图片模糊问题
// 1: 不同尺寸设备分开缓存,空间占用适中,命中率低下,但契合 emby 的图片缩放处理
// 2: 不同尺寸设备共用一份缓存,空间占用最大,移除 emby 的缩放参数,直接原图高清显示
const imageCachePolicy = 0;

2.这边新增了一个便捷化临时操作,不过还是受外部环境的多级缓存影响,可以试一下,历史缓存没有太大作用,如果不行的话,建议手动删除缓存目录下的文件

https://github.com/chen3861229/embyExternalUrl/blob/main/FAQ.md#21%E5%9B%A0%E4%B8%BA%E5%9B%BE%E7%89%87%E7%BC%93%E5%AD%98%E5%AF%BC%E8%87%B4%E6%9B%B4%E6%96%B0%E6%B5%B7%E6%8A%A5%E4%B8%8D%E7%94%9F%E6%95%88

https://github.com/bpking1/embyExternalUrl/pull/281

anyingxiuluo commented 2 months ago

收到,感谢大佬,问题已解决