Try to add Link header to preload resources

This commit is contained in:
Cadence Ember 2022-11-11 23:08:06 +13:00
parent ac17f40329
commit cea9d2082b
Signed by: cadence
GPG key ID: BC1C2C61CF521B17
2 changed files with 18 additions and 4 deletions

View file

@ -30,7 +30,8 @@
html-writing)) html-writing))
(define always-headers (define always-headers
(list (header #"Referrer-Policy" #"same-origin"))) ; header to not send referers to fandom (list (header #"Referrer-Policy" #"same-origin") ; header to not send referers to fandom
(header #"Link" (string->bytes/latin-1 link-header))))
(define timeouts (easy:make-timeout-config #:lease 5 #:connect 5)) (define timeouts (easy:make-timeout-config #:lease 5 #:connect 5))
(define (application-footer source-url #:license [license-in #f]) (define (application-footer source-url #:license [license-in #f])

View file

@ -1,14 +1,16 @@
#lang typed/racket/base #lang typed/racket/base
(require racket/path (require racket/path
racket/runtime-path) racket/runtime-path
racket/string)
(provide (provide
get-static-url) get-static-url
link-header)
(define-runtime-path path-static "../static") (define-runtime-path path-static "../static")
(define static-data (define static-data
(for/hash ([f (directory-list path-static)]) : (Immutable-HashTable Path Nonnegative-Integer) (for/hash : (Immutable-HashTable Path Nonnegative-Integer)([f (directory-list path-static)])
(define built (simple-form-path (build-path path-static f))) (define built (simple-form-path (build-path path-static f)))
(values built (file-or-directory-modify-seconds built)))) (values built (file-or-directory-modify-seconds built))))
@ -18,3 +20,14 @@
path-or-filename path-or-filename
(build-path path-static path-or-filename)))) (build-path path-static path-or-filename))))
(format "/static/~a?t=~a" (file-name-from-path the-path) (hash-ref static-data the-path))) (format "/static/~a?t=~a" (file-name-from-path the-path) (hash-ref static-data the-path)))
(: 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))
", ")))