@@ -34,6 +34,57 @@ func TestFrontendStaticFallbackServesExportedPage(t *testing.T) {
3434 if strings .TrimSpace (recorder .Body .String ()) != "chat page" {
3535 t .Fatalf ("expected chat page, got %q" , recorder .Body .String ())
3636 }
37+ if got := recorder .Header ().Get ("Cache-Control" ); got != "no-cache" {
38+ t .Fatalf ("expected exported page no-cache, got %q" , got )
39+ }
40+ }
41+
42+ func TestFrontendStaticCachesNextExportData (t * testing.T ) {
43+ gin .SetMode (gin .TestMode )
44+ root := t .TempDir ()
45+ if err := os .WriteFile (filepath .Join (root , "__next._tree.txt" ), []byte ("tree" ), 0o644 ); err != nil {
46+ t .Fatalf ("write next data: %v" , err )
47+ }
48+
49+ engine := gin .New ()
50+ registerFrontendStatic (engine , root , nil )
51+
52+ recorder := httptest .NewRecorder ()
53+ request := httptest .NewRequest (http .MethodGet , "/__next._tree.txt?conversation_id=demo&_rsc=abc" , nil )
54+ engine .ServeHTTP (recorder , request )
55+
56+ if recorder .Code != http .StatusOK {
57+ t .Fatalf ("expected status 200, got %d" , recorder .Code )
58+ }
59+ if got := recorder .Header ().Get ("Cache-Control" ); got != "public, max-age=86400, stale-while-revalidate=604800" {
60+ t .Fatalf ("expected next export data cache header, got %q" , got )
61+ }
62+ }
63+
64+ func TestFrontendStaticCachesImmutableBuildAssets (t * testing.T ) {
65+ gin .SetMode (gin .TestMode )
66+ root := t .TempDir ()
67+ chunkDir := filepath .Join (root , "_next" , "static" , "chunks" )
68+ if err := os .MkdirAll (chunkDir , 0o755 ); err != nil {
69+ t .Fatalf ("create chunk dir: %v" , err )
70+ }
71+ if err := os .WriteFile (filepath .Join (chunkDir , "app.js" ), []byte ("chunk" ), 0o644 ); err != nil {
72+ t .Fatalf ("write chunk: %v" , err )
73+ }
74+
75+ engine := gin .New ()
76+ registerFrontendStatic (engine , root , nil )
77+
78+ recorder := httptest .NewRecorder ()
79+ request := httptest .NewRequest (http .MethodGet , "/_next/static/chunks/app.js" , nil )
80+ engine .ServeHTTP (recorder , request )
81+
82+ if recorder .Code != http .StatusOK {
83+ t .Fatalf ("expected status 200, got %d" , recorder .Code )
84+ }
85+ if got := recorder .Header ().Get ("Cache-Control" ); got != "public, max-age=31536000, immutable" {
86+ t .Fatalf ("expected immutable cache header, got %q" , got )
87+ }
3788}
3889
3990func TestFrontendStaticFallbackSkipsAPIPaths (t * testing.T ) {
0 commit comments