DEV Community

Meghan (she/her)
Meghan (she/her)

Posted on

Efficient way to cache Google Fonts with Service Worker?

For as much as I know about PWAs and listened to talks about Service Workers, I haven't actually used them much (at all) beyond reading lots of documentation.

But with Google Fonts, they update the font all the time, and you could save anything from fonts.gstatic.com but that seems a little wasteful. Is there a better way?

Top comments (5)

Collapse
 
ben profile image
Ben Halpern

they update the font all the time

Do you need the latest update? How much could a single font change from day-to-day?

you could save anything from fonts.gstatic.com

No more inefficient than the browser cache itself right?

Collapse
 
nektro profile image
Meghan (she/her) • Edited

Yeah, I guess I was just worried about how long it might save the woff files, which would cause my app to have a lot of data cached because I don't know the policy on how long a file has to go unused for a browser to delete it.

Thanks for the response :)

Collapse
 
oleggromov profile image
Oleg Gromov • Edited

If I got your thought, this policy is simply an HTTP header. Look at Expires:

http head "https://fonts.gstatic.com/s/materialiconsextended/v34/iPCrlNN5TpNi9yeZKkKxX5ZJ3j3k35k5UVopKkfl5AGglnMp3_3A8V8Ai8YosRtX.woff2"
HTTP/1.1 200 OK
Accept-Ranges: bytes
Access-Control-Allow-Origin: *
Age: 203870
Alt-Svc: hq=":443"; ma=2592000; quic=51303431; quic=51303339; quic=51303338; quic=51303337; quic=51303335,quic=":443"; ma=2592000; v="41,39,38,37,35"
Cache-Control: public, max-age=31536000
Content-Length: 62472
Content-Type: font/woff2
Date: Thu, 22 Feb 2018 22:59:16 GMT
Expires: Fri, 22 Feb 2019 22:59:16 GMT
Last-Modified: Mon, 29 Jan 2018 21:31:28 GMT
Server: sffe
Timing-Allow-Origin: *
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Enter fullscreen mode Exit fullscreen mode
Thread Thread
 
nektro profile image
Meghan (she/her)

haha, would you look at that? totally forgot about Expires, thanks!

Thread Thread
 
oleggromov profile image
Oleg Gromov

Glad if it helps! NP :-)