Feat: Move from Pages to a Worker and serve popular images as static files
Static assets don't count toward the free plan's 100,000 requests a day, so a daily GitHub Action promotes the most viewed images (by Cloudflare analytics) from R2 into public/ before deploying, and reports to ntfy. Zone rules fold the site and ?i= into the path, since static files ignore query strings. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
After Width: | Height: | Size: 9.4 KiB |
|
After Width: | Height: | Size: 54 KiB |
|
After Width: | Height: | Size: 5.2 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 23 KiB |
@@ -0,0 +1,12 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
||||
<style>
|
||||
.f{stroke:#1a1a1a}.a{stroke:#0070f3}
|
||||
@media (prefers-color-scheme:dark){.f{stroke:#f5f5f5}}
|
||||
</style>
|
||||
<!-- frame -->
|
||||
<rect class="f" x="7" y="7" width="50" height="50" rx="13" stroke-width="4.5"/>
|
||||
<!-- the URL "/" rising into a peak -->
|
||||
<path class="f" d="M19 57 29 32l10 14 5-7 13 5" stroke-width="4.5"/>
|
||||
<!-- a link as the sun -->
|
||||
<path class="a" d="M-2-4h-3a4 4 0 0 0 0 8h3M2-4h3a4 4 0 0 1 0 8H2M-4 0h8" stroke-width="2.5" transform="translate(42 22) rotate(-45)"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 627 B |
|
After Width: | Height: | Size: 13 KiB |
@@ -0,0 +1,6 @@
|
||||
// New searches (cache misses) allowed per IP per day, reset at 00:00 UTC. Cache hits never count.
|
||||
// Safe to edit by hand. Imported by the worker and by the homepage (as a static file, so no Functions quota).
|
||||
// The burst limit (~20 req/10s) is a Cloudflare WAF rule, not set here.
|
||||
export const DAILY_LIMIT = 10;
|
||||
export const FREE_DAILY_LIMIT = 100;
|
||||
export const AI_DAILY_LIMIT = 100;
|
||||