Split internal/imgcache into the image proxy and the cache (closes #317)
check / check (push) Canceled after 0s
check / check (push) Canceled after 0s
The new package internal/imageproxy holds Proxy, which was imgcache.Service, with its Config, ImageResponse, CacheStatus and errors. internal/imgcache holds the cache only, and imgcache.CacheConfig is imgcache.Config. The cache reads and writes each kind it keeps with one pair of methods: Variant and PutVariant, Source and PutSource, Failure and PutFailure. Source replaces LookupSource followed by GetSourceContent. imgcache.go and module.go are gone. The proxy's tests moved with it. They reach the cache through its database, its state directory and its metrics registry, and run its reconciliation pass with a second cache, as pixad does at startup. Model: opus-5-5
This commit is contained in:
@@ -30,6 +30,31 @@ P2: security: per-origin rate limiting
|
||||
|
||||
# Completed Steps
|
||||
|
||||
- 2026-10-26 `internal/imgcache` holds the cache only (closes #317). The new
|
||||
package `internal/imageproxy` fetches, transforms, caches and serves images.
|
||||
It imports `imgcache`, and `imgcache` does not import it.
|
||||
- `imgcache.Service` is `imageproxy.Proxy`, built by `imageproxy.NewProxy`
|
||||
from an `imageproxy.Config`.
|
||||
- `ImageResponse`, `CacheStatus`, `ErrNegativeCached` and
|
||||
`ErrProcessingTimedOut` moved with it, under their names.
|
||||
- `imgcache.CacheConfig` is `imgcache.Config`.
|
||||
- The cache has one read and one write for each kind it keeps. Each takes
|
||||
the place of an earlier method:
|
||||
- `Variant`, of `GetVariant`
|
||||
- `PutVariant`, of `StoreVariant`
|
||||
- `Source`, of `LookupSource` followed by `GetSourceContent`
|
||||
- `PutSource`, of `StoreSource`
|
||||
- `Failure`, of `checkNegativeCache`
|
||||
- `PutFailure`, of `StoreNegative`
|
||||
- `Variant` and `Source` each open the file and hand its access time to the
|
||||
background writer. A cache hit still makes no database call.
|
||||
- `imgcache.go` and `module.go` are gone.
|
||||
- A cached source whose row cannot be read is logged as "failed to load
|
||||
cached source, fetching". It was logged as "source lookup failed".
|
||||
- The proxy's tests moved to `internal/imageproxy`. They reach the cache
|
||||
through its database, its state directory and its metrics registry.
|
||||
- Those tests run the reconciliation pass as pixad does when it starts: with
|
||||
a second cache over the same database and directory.
|
||||
- 2026-10-26 both image routes serve an image with one function, `serveImage`,
|
||||
and answer its errors with one, `respondImageError` (closes #316).
|
||||
`HandleImage` parses the path and verifies the signature, and `HandleImageEnc`
|
||||
|
||||
Reference in New Issue
Block a user