12355b7859
fix(tasks): skip symlinks during image disk cache cleanup
2026-06-18 10:10:51 +08:00
a71da7473d
perf(image): remove redundant Vec clone before spawn_blocking
2026-06-18 10:10:44 +08:00
0b107c3f2e
feat(tasks): add periodic image disk cache cleanup
2026-06-18 10:03:38 +08:00
36554af5f5
perf(image): store cached image data as Bytes to avoid Vec cloning
2026-06-18 10:03:35 +08:00
411e565465
docs(cache,search): update module and function comments
2026-06-18 09:55:45 +08:00
24bc6f44a0
fix(tasks): invalidate session cache after cleaning expired sessions
2026-06-18 09:55:04 +08:00
518b4e5d64
refactor(auth): store SessionUser instead of full User in session cache
2026-06-18 09:55:00 +08:00
c780247d17
feat(posts): invalidate search cache on writes
2026-06-17 17:21:01 +08:00
c40a771989
feat(search): cache search results with short TTL
2026-06-17 17:20:54 +08:00
1d216faa2f
feat(auth): add in-memory session cache
2026-06-17 17:20:47 +08:00
75b8f80631
fix(posts): wrap empty_trash in transaction and lock rows for precise invalidation
2026-06-17 17:05:07 +08:00
05b9a3a595
feat: enable all HTTP compression algorithms by default
...
CI / check (push) Failing after 14m38s
CI / build (push) Has been skipped
- COMPRESSION_ALGORITHMS defaults to 'all' when unset
- Support 'none'/'off' to explicitly disable compression
- Add parse_compression_algorithms helper and unit tests
- Update .env.example comment to reflect new default
2026-06-17 17:03:17 +08:00
7bd02d0ea9
perf(cache): run tag post invalidations concurrently
2026-06-17 16:59:29 +08:00
2d8f1e0d98
refactor(posts): avoid redundant cache invalidation in bulk fallback paths
2026-06-17 16:59:24 +08:00
c77f751377
refactor(posts): apply precise invalidation limit to batch_restore_posts
2026-06-17 16:59:18 +08:00
ca212a2aab
fix(posts): lock rows and read metadata in transaction for delete/purge/restore
2026-06-17 16:58:54 +08:00
634f733e36
feat: add Cache-Control headers for public pages and static assets
...
- Public SSR pages: public, max-age=300, stale-while-revalidate=3600
- Static assets (/_dioxus/, /wasm/, *.js, *.wasm, style.css, highlight.css): public, max-age=31536000, immutable
- API, admin, auth pages and non-GET/HEAD requests remain uncached
- Add unit tests for cache control path matching
2026-06-17 16:57:42 +08:00
1092fbb3ce
fix(posts): ensure rebuild invalidates tag posts cache
2026-06-17 16:44:32 +08:00
facb75d632
feat: make HTTP compression algorithms configurable via COMPRESSION_ALGORITHMS
CI / check (push) Failing after 6m57s
CI / build (push) Has been skipped
2026-06-17 16:38:41 +08:00
c03093fc8b
refactor(posts): use precise cache invalidation in rebuild
2026-06-17 16:37:20 +08:00
bb34e2c36e
refactor(posts): use precise cache invalidation in trash operations
2026-06-17 16:37:20 +08:00
82b070e7ac
refactor(posts): use precise cache invalidation in create/update/delete
2026-06-17 16:37:20 +08:00
c528936abb
feat(cache): add invalidate_tag_posts_for helper
2026-06-17 16:37:20 +08:00
15e7e2578d
refactor(utils): extract reading_time helper
2026-06-17 16:25:22 +08:00
e683efe0ea
refactor(models): remove dead Post status methods, add PostListItem tests
2026-06-17 16:24:50 +08:00
9f41ea7354
refactor(posts): remove orphan row_to_post_list and use row_to_post_full for get_post_by_id
2026-06-17 16:24:38 +08:00
1eedab8f21
perf(posts): remove content_md from list/search SQL, read stored word counts
2026-06-17 16:06:27 +08:00
a6f08d5d3f
feat(db): add word_count and reading_time columns to posts
2026-06-17 16:06:21 +08:00
51e20980db
perf(stats): combine three COUNT queries into one conditional aggregation
2026-06-17 15:51:29 +08:00
170c021b37
feat(cache): add PostListItem DTO and use it in list/tag/search caches
2026-06-17 15:51:19 +08:00
31d5a99d2a
Merge cleanup/redundancies: remove dead comment code and duplicate DB indexes
CI / check (push) Failing after 7m33s
CI / build (push) Has been skipped
2026-06-17 15:24:47 +08:00
70e61ab65d
docs: explain why ConnectInfo is optional for image routes
2026-06-17 15:16:26 +08:00
018b3876b7
fix: return 404 for bare /uploads path and correct CHANGELOG
2026-06-17 14:47:22 +08:00
abdfd2e3f9
fix: make If-None-Match comparison RFC 7232 compliant
2026-06-17 14:14:37 +08:00
27ce878771
feat: support If-None-Match 304 for image responses
2026-06-17 14:08:45 +08:00
21b665f41d
feat: add Cache-Control and ETag headers for image responses
2026-06-17 13:59:17 +08:00
fe6e5bd045
perf: offload image decode/resize/encode to spawn_blocking
2026-06-17 13:52:05 +08:00
b48590ced3
feat: add compression and timeout middleware, skip uploads and image routes
2026-06-17 13:45:55 +08:00
7bad3ce382
fix: make ConnectInfo optional in serve_image to prevent 500
2026-06-17 13:40:17 +08:00
d1c9cea683
refactor(cache): remove unused per-post comment count cache
2026-06-17 11:52:57 +08:00
07cb0a5b0d
refactor(comments): stop invalidating removed comment count cache in updates
2026-06-17 11:45:49 +08:00
a7fb8405c3
refactor(comments): stop invalidating removed comment count cache
2026-06-17 11:43:16 +08:00
a4954a6c1b
refactor(comments): remove unused CommentCountResponse and PendingCommentsResponse
2026-06-17 11:39:12 +08:00
fc9fce1f4d
refactor(comments): remove dead re-exports from comments module
2026-06-17 11:30:14 +08:00
472d8e91fa
refactor(comments): remove unused get_comment_count server function
2026-06-17 11:26:50 +08:00
0545412cf3
refactor(comments): remove unused get_pending_comments server function
2026-06-17 11:23:00 +08:00
d826afbe15
fix(db): 为 deadpool-postgres 连接池指定 Tokio1 runtime
CI / check (push) Failing after 6m5s
CI / build (push) Has been skipped
2026-06-17 11:07:23 +08:00
b045a1b978
fix build errors
2026-06-17 10:52:01 +08:00
2c1190d8fb
移除 SSR HTML minify 中间件及相关工具
CI / check (push) Failing after 5m21s
CI / build (push) Has been skipped
2026-06-17 10:43:09 +08:00
476fad27e5
fix(minify): preserve Dioxus hydration markers and remove unsafe per-URL cache
...
- Keep Dioxus SSR comments (<!--#-->, <!--node-id<N>-->, <!--placeholder-->)
during HTML minification to avoid hydration failures.
- Drop the per-URL minify cache in the Axum middleware: the same URL can
render differently for logged-in vs anonymous users, so URL-level caching
risks leaking admin UI into public responses.
- Let the middleware handle HTML minification once instead of minifying in
markdown rendering as well.
- Consolidate CSS comment stripping into the existing minify_css path and
add a benchmark for html_minify.
2026-06-17 10:43:09 +08:00