@@ -418,6 +418,7 @@ func esmRouter(db Database, buildStorage storage.Storage, logger *log.Logger) re
418418 } else {
419419 ctx .SetHeader ("Content-Type" , ctJavaScript )
420420 }
421+ ctx .SetHeader ("Content-Length" , fmt .Sprintf ("%d" , fi .Size ()))
421422 ctx .SetHeader ("Last-Modified" , fi .ModTime ().UTC ().Format (http .TimeFormat ))
422423 ctx .SetHeader ("Cache-Control" , ccImmutable )
423424 return f // auto closed
@@ -558,13 +559,14 @@ func esmRouter(db Database, buildStorage storage.Storage, logger *log.Logger) re
558559 h .Write ([]byte (target ))
559560 h .Write ([]byte (v ))
560561 savePath := normalizeSavePath (zoneIdHeader , path .Join ("modules/x" , hex .EncodeToString (h .Sum (nil ))+ ".css" ))
561- r , _ , err := buildStorage .Get (savePath )
562+ r , fi , err := buildStorage .Get (savePath )
562563 if err != nil && err != storage .ErrNotFound {
563564 return rex .Status (500 , err .Error ())
564565 }
565566 if err == nil {
566567 ctx .SetHeader ("Cache-Control" , ccImmutable )
567568 ctx .SetHeader ("Content-Type" , ctCSS )
569+ ctx .SetHeader ("Content-Length" , fmt .Sprintf ("%d" , fi .Size ()))
568570 return r // auto closed
569571 }
570572 res , err := fetchClient .Fetch (ctxUrl , nil )
@@ -701,7 +703,7 @@ func esmRouter(db Database, buildStorage storage.Storage, logger *log.Logger) re
701703 h .Write ([]byte (target ))
702704 h .Write ([]byte (v ))
703705 savePath := normalizeSavePath (zoneIdHeader , path .Join ("modules/x" , hex .EncodeToString (h .Sum (nil ))+ ".mjs" ))
704- content , _ , err := buildStorage .Get (savePath )
706+ content , fi , err := buildStorage .Get (savePath )
705707 if err != nil && err != storage .ErrNotFound {
706708 return rex .Status (500 , err .Error ())
707709 }
@@ -786,6 +788,7 @@ func esmRouter(db Database, buildStorage storage.Storage, logger *log.Logger) re
786788 return rex .Status (500 , err .Error ())
787789 }
788790 body = bytes .NewReader ([]byte (out .Code ))
791+ fi = nil
789792 go buildStorage .Put (savePath , strings .NewReader (out .Code ))
790793 }
791794 if extname == ".css" && query .Has ("module" ) {
@@ -797,13 +800,17 @@ func esmRouter(db Database, buildStorage storage.Storage, logger *log.Logger) re
797800 return rex .Status (500 , "Failed to read css" )
798801 }
799802 body = strings .NewReader (fmt .Sprintf ("var style = document.createElement('style');\n style.textContent = %s;\n document.head.appendChild(style);\n export default null;" , utils .MustEncodeJSON (string (css ))))
803+ fi = nil
800804 }
801805 ctx .SetHeader ("Cache-Control" , ccImmutable )
802806 if extname == ".css" {
803807 ctx .SetHeader ("Content-Type" , ctCSS )
804808 } else {
805809 ctx .SetHeader ("Content-Type" , ctJavaScript )
806810 }
811+ if fi != nil {
812+ ctx .SetHeader ("Content-Length" , fmt .Sprintf ("%d" , fi .Size ()))
813+ }
807814 return body // auto closed
808815 }
809816 }
@@ -1162,6 +1169,7 @@ func esmRouter(db Database, buildStorage storage.Storage, logger *log.Logger) re
11621169 ctx .SetHeader ("Content-Type" , contentType )
11631170 }
11641171 }
1172+ ctx .SetHeader ("Content-Length" , fmt .Sprintf ("%d" , stat .Size ()))
11651173 if cacheHit {
11661174 ctx .SetHeader ("X-Raw-File-Cache-Status" , "HIT" )
11671175 }
@@ -1239,8 +1247,9 @@ func esmRouter(db Database, buildStorage storage.Storage, logger *log.Logger) re
12391247 xxh := xxhash .New ()
12401248 xxh .Write ([]byte (strings .Join (exports , "," )))
12411249 savePath = strings .TrimSuffix (savePath , ".mjs" ) + "_" + base64 .RawURLEncoding .EncodeToString (xxh .Sum (nil )) + ".mjs"
1242- f2 , _ , err := buildStorage .Get (savePath )
1250+ f2 , stat , err := buildStorage .Get (savePath )
12431251 if err == nil {
1252+ ctx .SetHeader ("Content-Length" , fmt .Sprintf ("%d" , stat .Size ()))
12441253 return f2 // auto closed
12451254 }
12461255 if err != storage .ErrNotFound {
@@ -1275,6 +1284,7 @@ func esmRouter(db Database, buildStorage storage.Storage, logger *log.Logger) re
12751284 }
12761285 return bytes .ReplaceAll (buffer , []byte ("{ESM_CDN_ORIGIN}" ), []byte (origin ))
12771286 }
1287+ ctx .SetHeader ("Content-Length" , fmt .Sprintf ("%d" , stat .Size ()))
12781288 return f // auto closed
12791289 }
12801290 }
@@ -1665,8 +1675,9 @@ func esmRouter(db Database, buildStorage storage.Storage, logger *log.Logger) re
16651675 xxh := xxhash .New ()
16661676 xxh .Write ([]byte (strings .Join (exports , "," )))
16671677 savePath = strings .TrimSuffix (savePath , ".mjs" ) + "_" + base64 .RawURLEncoding .EncodeToString (xxh .Sum (nil )) + ".mjs"
1668- f2 , _ , err := buildStorage .Get (savePath )
1678+ f2 , stat , err := buildStorage .Get (savePath )
16691679 if err == nil {
1680+ ctx .SetHeader ("Content-Length" , fmt .Sprintf ("%d" , stat .Size ()))
16701681 return f2 // auto closed
16711682 }
16721683 if err != storage .ErrNotFound {
@@ -1685,6 +1696,7 @@ func esmRouter(db Database, buildStorage storage.Storage, logger *log.Logger) re
16851696 return ret
16861697 }
16871698 }
1699+ ctx .SetHeader ("Content-Length" , fmt .Sprintf ("%d" , fi .Size ()))
16881700 return f // auto closed
16891701 }
16901702
0 commit comments