Favicons cache implementation overhaul

update: this is now merged into master.

i know some people have unhealthy obsession with favicons so i’m going to post a heads up.

i’m moving favicons from this legacy special case (files placed in feed-icons/12345.ico and referred directly by feed id) to generic storage based on DiskCache. this enables

  • storing favicons in S3 or anywhere else if you make an implementation for it;
  • limiting favicon access to authenticated users (not at this time, but it’s planned) because it is somewhat of an information leak;

when this is merged, current favicon storage directory becomes unused. i wrote a housekeeping hook which moves old favicons to their new home in cache/feed-icons but if something goes wrong you’ll have to do this manually (removing the ‘.ico’ suffix in the process). housekeeping is not run immediately so you might need to wait a bit until favicons migrate.

i haven’t decided yet what to do with the API. current way of passing icons_dir/icons_url and hoping for the best won’t work anymore, i’m not going to remove anything but you won’t get any actual files. if anyone cares about this, we’ll figure out a workaround / api version bump. to me, this is a low priority kinda thing.

related changes also enable caching (i.e. expires:) and http if-modified-since support for cached files which was entirely missing.

questions? post here.

2 Likes

when this is merged, current favicon storage directory becomes unused. i wrote a housekeeping hook which moves old favicons to their new home in cache/feed-icons but if something goes wrong you’ll have to do this manually (removing the ‘.ico’ suffix in the process). housekeeping is not run immediately so you might need to wait a bit until favicons migrate.

If I read https://dev.tt-rss.org/tt-rss/tt-rss/commit/a30b9bb649d6e10a5d7c2feb73376669cf23ef68 and related code correctly, housekeeping happens when feeds are updated. Is it correct?

Um… not sure what I’m supposed to do/have done/need to do here to get the icons back; …

Something's certainly trying to get the icons..
web-nginx_1  | 127.0.0.1 - - [28/Nov/2022:10:20:26 +0000] "GET /tt-rss/index.php HTTP/1.1" 200 950 "-" "curl/7.83.1"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:20:28 +0000] "POST /tt-rss/backend.php HTTP/1.0" 200 27488 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:20:28 +0000] "GET /tt-rss//public.php?op=feed_icon&id=157 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:20:28 +0000] "GET /tt-rss//public.php?op=feed_icon&id=38 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:20:28 +0000] "GET /tt-rss//public.php?op=feed_icon&id=78 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:20:28 +0000] "GET /tt-rss//public.php?op=feed_icon&id=25 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:20:28 +0000] "GET /tt-rss//public.php?op=feed_icon&id=141 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:20:28 +0000] "GET /tt-rss//public.php?op=feed_icon&id=94 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:20:28 +0000] "GET /tt-rss//public.php?op=feed_icon&id=33 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:20:29 +0000] "GET /tt-rss//public.php?op=feed_icon&id=18 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:20:29 +0000] "GET /tt-rss//public.php?op=feed_icon&id=64 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:20:29 +0000] "GET /tt-rss//public.php?op=feed_icon&id=185 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:20:29 +0000] "GET /tt-rss//public.php?op=feed_icon&id=142 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:20:29 +0000] "GET /tt-rss//public.php?op=feed_icon&id=87 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:20:29 +0000] "GET /tt-rss//public.php?op=feed_icon&id=127 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:20:29 +0000] "GET /tt-rss//public.php?op=feed_icon&id=117 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:20:29 +0000] "GET /tt-rss//public.php?op=feed_icon&id=147 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:20:29 +0000] "GET /tt-rss//public.php?op=feed_icon&id=81 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:20:29 +0000] "GET /tt-rss//public.php?op=feed_icon&id=210 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:20:29 +0000] "GET /tt-rss//public.php?op=feed_icon&id=165 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:20:29 +0000] "GET /tt-rss//public.php?op=feed_icon&id=35 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:20:29 +0000] "GET /tt-rss//public.php?op=feed_icon&id=168 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:20:29 +0000] "GET /tt-rss//public.php?op=feed_icon&id=223 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:20:29 +0000] "GET /tt-rss//public.php?op=feed_icon&id=199 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:20:29 +0000] "GET /tt-rss//public.php?op=feed_icon&id=111 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:20:29 +0000] "GET /tt-rss//public.php?op=feed_icon&id=58 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:20:29 +0000] "GET /tt-rss//public.php?op=feed_icon&id=22 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:20:30 +0000] "GET /tt-rss//public.php?op=feed_icon&id=113 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:20:30 +0000] "GET /tt-rss//public.php?op=feed_icon&id=200 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:20:30 +0000] "GET /tt-rss//public.php?op=feed_icon&id=226 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:20:30 +0000] "GET /tt-rss//public.php?op=feed_icon&id=48 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:20:30 +0000] "GET /tt-rss//public.php?op=feed_icon&id=181 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:20:30 +0000] "GET /tt-rss//public.php?op=feed_icon&id=198 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:20:30 +0000] "GET /tt-rss//public.php?op=feed_icon&id=134 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:20:30 +0000] "GET /tt-rss//public.php?op=feed_icon&id=89 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:20:30 +0000] "GET /tt-rss//public.php?op=feed_icon&id=13 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:20:32 +0000] "POST /tt-rss/backend.php HTTP/1.0" 200 41133 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:20:32 +0000] "GET /tt-rss//public.php?op=feed_icon&id=212 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 127.0.0.1 - - [28/Nov/2022:10:20:56 +0000] "GET /tt-rss/index.php HTTP/1.1" 200 950 "-" "curl/7.83.1"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:21:10 +0000] "POST /tt-rss/backend.php HTTP/1.0" 200 184 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:21:17 +0000] "POST /tt-rss/backend.php HTTP/1.0" 200 27490 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:21:17 +0000] "GET /tt-rss//public.php?op=feed_icon&id=89 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:21:17 +0000] "GET /tt-rss//public.php?op=feed_icon&id=141 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:21:25 +0000] "POST /tt-rss/backend.php HTTP/1.0" 200 184 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 127.0.0.1 - - [28/Nov/2022:10:21:26 +0000] "GET /tt-rss/index.php HTTP/1.1" 200 950 "-" "curl/7.83.1"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:21:28 +0000] "POST /tt-rss/backend.php HTTP/1.0" 200 27488 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 127.0.0.1 - - [28/Nov/2022:10:21:56 +0000] "GET /tt-rss/index.php HTTP/1.1" 200 950 "-" "curl/7.83.1"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:22:09 +0000] "POST /tt-rss/backend.php HTTP/1.0" 200 184 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:22:17 +0000] "POST /tt-rss/backend.php HTTP/1.0" 200 27490 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:22:18 +0000] "GET /tt-rss//public.php?op=feed_icon&id=193 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:22:18 +0000] "GET /tt-rss//public.php?op=feed_icon&id=23 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:22:18 +0000] "GET /tt-rss//public.php?op=feed_icon&id=129 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:22:18 +0000] "GET /tt-rss//public.php?op=feed_icon&id=70 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:22:18 +0000] "GET /tt-rss//public.php?op=feed_icon&id=132 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:22:18 +0000] "GET /tt-rss//public.php?op=feed_icon&id=149 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:22:18 +0000] "GET /tt-rss//public.php?op=feed_icon&id=54 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:22:18 +0000] "GET /tt-rss//public.php?op=feed_icon&id=119 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:22:19 +0000] "GET /tt-rss//public.php?op=feed_icon&id=56 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:22:19 +0000] "GET /tt-rss//public.php?op=feed_icon&id=95 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:22:19 +0000] "GET /tt-rss//public.php?op=feed_icon&id=213 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:22:19 +0000] "GET /tt-rss//public.php?op=feed_icon&id=63 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:22:19 +0000] "GET /tt-rss//public.php?op=feed_icon&id=128 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:22:19 +0000] "GET /tt-rss//public.php?op=feed_icon&id=138 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:22:25 +0000] "POST /tt-rss/backend.php HTTP/1.0" 200 184 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 127.0.0.1 - - [28/Nov/2022:10:22:26 +0000] "GET /tt-rss/index.php HTTP/1.1" 200 950 "-" "curl/7.83.1"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:22:28 +0000] "POST /tt-rss/backend.php HTTP/1.0" 200 27488 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:22:28 +0000] "GET /tt-rss//public.php?op=feed_icon&id=23 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:22:28 +0000] "GET /tt-rss//public.php?op=feed_icon&id=193 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:22:28 +0000] "GET /tt-rss//public.php?op=feed_icon&id=129 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:22:28 +0000] "GET /tt-rss//public.php?op=feed_icon&id=132 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:22:28 +0000] "GET /tt-rss//public.php?op=feed_icon&id=70 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:22:28 +0000] "GET /tt-rss//public.php?op=feed_icon&id=149 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:22:28 +0000] "GET /tt-rss//public.php?op=feed_icon&id=119 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:22:29 +0000] "GET /tt-rss//public.php?op=feed_icon&id=138 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:22:29 +0000] "GET /tt-rss//public.php?op=feed_icon&id=56 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:22:29 +0000] "GET /tt-rss//public.php?op=feed_icon&id=54 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:22:29 +0000] "GET /tt-rss//public.php?op=feed_icon&id=95 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:22:29 +0000] "GET /tt-rss//public.php?op=feed_icon&id=128 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:22:29 +0000] "GET /tt-rss//public.php?op=feed_icon&id=213 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:22:29 +0000] "GET /tt-rss//public.php?op=feed_icon&id=6 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"
web-nginx_1  | 172.18.0.1 - - [28/Nov/2022:10:22:29 +0000] "GET /tt-rss//public.php?op=feed_icon&id=63 HTTP/1.0" 200 950 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0"

Forcing a hard-refresh shows the (old?) icons briefly, but then they eventually (within 10 seconds) get replaced with the placeholders shown above.

1 Like
  • Try one of the icon URLs directly (e.g. https://your.site//tt-rss//public.php?op=feed_icon&id=193) and see what shows up. All of the feed icon requests you listed have an extra / in the URL and a 950 byte response.
  • Check the contents of the feed-icons and cache/feed-icons directories. You should only see index.html in the former, and a bunch of files with number names in the latter. Make sure the user running tt-rss (app+updater) has sufficient filesystem access.

Found the problem - there was a trailing slash on TTRSS_SELF_URL_PATH in .env.

Too many slashes apparently…

1 Like

ah, that’s interesting.

in general multiple consecutive slashes is an entirely cosmetic thing, they shouldn’t affect anything. but in this case URL goes through tt-rss backend which checks SELF_URL_PATH which fails.

i guess SELF_URL_PATH should be normalized to either always have trailing slash or not. i seem to vaguely recall something like that being implemented already.

get_self_url: strip all trailing slashes · 94c49399cc - tt-rss - Tiny Tiny RSS fix

yeah, after all feeds in the batch are updated.

8 posts were split to a new topic: I managed to break tt-rss docker container, here’s my story

If you are rolling your own without /tt-rss/ but still finding it in the response, it might be the xaccel plugin. Set TTRSS_NGINX_XACCEL_PREFIX to an empty string. (Not unset, it has a default. It must be explicitly empty.)

This wasn’t enough in my setup, but I’ve fixed as described here.

Is it OK to delete the feed-icons directory after all the icons have been moved to /cache/feed-icons/?

this directory is still in the repo so just ignore it for now.
sorry for the delay, forgot to reply.