https://discord.umbraco.com logo
oh really! well I guess this might help if they ar...
# show-and-tell
a
oh really! well I guess this might help if they are redirectd to the md files? the HTML traffic isn't written? Claude says 🙂 Realistic volume: - Humans never hit .md URLs (they get HTML on /about/, which doesn't write anything). Only AI crawlers + audit tools hit the Markdown surfaces. - AI crawler hit rates are roughly the same order as traditional search bots (Googlebot, Bingbot) — hundreds-to-low-thousands/day for a content site, not orders of magnitude more. - 304 cache revalidations skip writing entirely. Cloudflare-fronted sites have most of their AI traffic filtered before it reaches the writer. Defences in the package: - Bounded channel with DropOldest — default 1024 capacity, configurable to 65536. Under pressure, oldest entries drop; never blocks the request thread or blows memory. - Batched writes via NPoco InsertBulk: 50 rows per batch OR every 1s, whichever fires first → roughly 1 INSERT/s per node under sustained load, not 1 per request. - 90-day retention purge by default; configurable. - Each row is small (~150-300 bytes — path + content key + culture + UA class + referrer host). For high-traffic adopters, three escape hatches: - Tune the knobs: AiVisibility:RequestLog:{QueueCapacity, BatchSize, MaxBatchIntervalSeconds} + LogRetention:DurationDays - Kill the writer entirely: AiVisibility:RequestLog:Enabled = false - Replace IRequestLog (public DI extension point) — point at App Insights with built-in sampling, wrap with a sampling decorator (e.g. log 1 in 10), or redirect to your own store For codeshare-scale: defaults handle it without thinking. For a major news org pushing 500k AI hits/day: tune knobs or swap IRequestLog. No adopter is forced into the default shape.
3 Views