Use preloads and defer to speed up page loads
This commit is contained in:
		
							parent
							
								
									18988a6a55
								
							
						
					
					
						commit
						b3b0654507
					
				| 
						 | 
				
			
			@ -32,7 +32,7 @@ proc renderNavbar*(title, rss: string; req: Request): VNode =
 | 
			
		|||
        iconReferer "cog", "/settings", path, title="Preferences"
 | 
			
		||||
 | 
			
		||||
proc renderHead*(prefs: Prefs; cfg: Config; titleText=""; desc=""; video="";
 | 
			
		||||
                 images: seq[string] = @[]; ogTitle=""): VNode =
 | 
			
		||||
                 images: seq[string] = @[]; ogTitle=""; theme=""; rss=""): VNode =
 | 
			
		||||
  let ogType =
 | 
			
		||||
    if video.len > 0: "video"
 | 
			
		||||
    elif images.len > 0: "photo"
 | 
			
		||||
| 
						 | 
				
			
			@ -45,8 +45,17 @@ proc renderHead*(prefs: Prefs; cfg: Config; titleText=""; desc=""; video="";
 | 
			
		|||
    opensearchUrl = "http://" & cfg.hostname & "/opensearch"
 | 
			
		||||
 | 
			
		||||
  buildHtml(head):
 | 
			
		||||
    link(rel="stylesheet", `type`="text/css", href="/css/style.css?v=3")
 | 
			
		||||
    link(rel="stylesheet", `type`="text/css", href="/css/fontello.css?v=2")
 | 
			
		||||
    link(rel="preload", type="text/css", href="/css/style.css?v=3", `as`="style")
 | 
			
		||||
    link(rel="preload", type="text/css", href="/css/fontello.css?v=2", `as`="style")
 | 
			
		||||
    link(rel="preload", href="/fonts/fontello.woff2?21002321", `as`="font")
 | 
			
		||||
 | 
			
		||||
    link(rel="stylesheet", type="text/css", href="/css/style.css?v=3")
 | 
			
		||||
    link(rel="stylesheet", type="text/css", href="/css/fontello.css?v=2")
 | 
			
		||||
 | 
			
		||||
    if theme.len > 0:
 | 
			
		||||
      link(rel="preload", type="text/css", href=(&"/css/themes/{theme}.css"), `as`="style")
 | 
			
		||||
      link(rel="stylesheet", type="text/css", href=(&"/css/themes/{theme}.css"))
 | 
			
		||||
 | 
			
		||||
    link(rel="apple-touch-icon", sizes="180x180", href="/apple-touch-icon.png")
 | 
			
		||||
    link(rel="icon", type="image/png", sizes="32x32", href="/favicon-32x32.png")
 | 
			
		||||
    link(rel="icon", type="image/png", sizes="16x16", href="/favicon-16x16.png")
 | 
			
		||||
| 
						 | 
				
			
			@ -55,12 +64,15 @@ proc renderHead*(prefs: Prefs; cfg: Config; titleText=""; desc=""; video="";
 | 
			
		|||
    link(rel="search", type="application/opensearchdescription+xml", title=cfg.title,
 | 
			
		||||
                            href=opensearchUrl)
 | 
			
		||||
 | 
			
		||||
    if rss.len > 0:
 | 
			
		||||
      link(rel="alternate", type="application/rss+xml", href=rss, title="RSS feed")
 | 
			
		||||
 | 
			
		||||
    if prefs.hlsPlayback:
 | 
			
		||||
      script(src="/js/hls.light.min.js")
 | 
			
		||||
      script(src="/js/hlsPlayback.js")
 | 
			
		||||
      script(src="/js/hls.light.min.js", `defer`="")
 | 
			
		||||
      script(src="/js/hlsPlayback.js", `defer`="")
 | 
			
		||||
 | 
			
		||||
    if prefs.infiniteScroll:
 | 
			
		||||
      script(src="/js/infiniteScroll.js")
 | 
			
		||||
      script(src="/js/infiniteScroll.js", `defer`="")
 | 
			
		||||
 | 
			
		||||
    title:
 | 
			
		||||
      if titleText.len > 0:
 | 
			
		||||
| 
						 | 
				
			
			@ -92,12 +104,7 @@ proc renderMain*(body: VNode; req: Request; cfg: Config; prefs=defaultPrefs;
 | 
			
		|||
    theme = toLowerAscii(req.params["theme"]).replace(" ", "_")
 | 
			
		||||
 | 
			
		||||
  let node = buildHtml(html(lang="en")):
 | 
			
		||||
    renderHead(prefs, cfg, titleText, desc, video, images, ogTitle):
 | 
			
		||||
      if theme.len > 0:
 | 
			
		||||
        link(rel="stylesheet", `type`="text/css", href=(&"/css/themes/{theme}.css"))
 | 
			
		||||
 | 
			
		||||
      if rss.len > 0:
 | 
			
		||||
        link(rel="alternate", `type`="application/rss+xml", href=rss, title="RSS feed")
 | 
			
		||||
    renderHead(prefs, cfg, titleText, desc, video, images, ogTitle, theme, rss)
 | 
			
		||||
 | 
			
		||||
    body:
 | 
			
		||||
      renderNavbar(cfg.title, rss, req)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue