diff --git a/src/static-data.rkt b/src/static-data.rkt index c08c83a..1255ca5 100644 --- a/src/static-data.rkt +++ b/src/static-data.rkt @@ -21,13 +21,17 @@ (build-path path-static path-or-filename)))) (format "/static/~a?t=~a" (file-name-from-path the-path) (hash-ref static-data the-path))) +; https://developer.mozilla.org/en-US/docs/Web/HTML/Link_types/preload (: link-header String) (define link-header - (let* ([with-t '("main.css")] - [with-t-full (map get-static-url with-t)] - [without-t '("preact.js" "source-sans-pro-v21-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-regular.woff2")] - [without-t-full (map (λ (path) (format "/static/~a" path)) without-t)]) - (string-join - (for/list : (Listof String) ([full-path : String (append with-t-full without-t-full)]) - (format "<~a>; rel=\"preload\"" full-path)) - ", "))) + (let* ([with-t '(("main.css" "as=style"))] + [without-t '(("preact.js" "as=script") + ("source-sans-pro-v21-vietnamese_latin-ext_latin_greek-ext_greek_cyrillic-ext_cyrillic-regular.woff2" "as=font" "crossorigin" "type=font/woff2"))] + [with-t-full (map (λ ([path : (Listof String)]) (cons (get-static-url (car path)) (cdr path))) with-t)] + [without-t-full (map (λ ([path : (Listof String)]) (cons (format "/static/~a" (car path)) (cdr path))) without-t)] + [all (append with-t-full without-t-full)] + [header-parts + (for/list : (Listof String) ([full-path all]) + (define attributes (map (λ ([s : String]) (format "; ~a" s)) (cdr full-path))) + (format "<~a>; rel=preload~a" (car full-path) (string-join attributes "")))]) + (string-join header-parts ", ")))