this is my first real website I created after learning about web development.
It's amazing to me that anyone would spare their free time to code review strangers' code. So thank you in advance. I'd like a general feedback and especially on the caching I implemented. The full Code (with ejs templates and media etc) is on [Github][1]. I wrote this half a year ago and just added some more comments so, just ignore the stupid stuff :D. Here's the server code:

    const ejs = require("ejs"); // not needed
    const marked = require("marked");
    const path = require("path");
    const fs = require("fs");
    
    const db = require("./mariadb.js");
    const config = require("./config.js");
    const express = require('express');
    
    const app = express();
    
    // used to be BodyParser.url... now deprecated
    app.use(express.urlencoded({ extended: false }));
    app.use(express.json());
    app.use(express.static('public'))
    app.set("view engine","ejs");
    app.set('view cache', false);
    app.set('views', path.join(__dirname, '/sites'));
    
    app.use("*",(req, res, next) => {
        console.log("-----------------------------");
        console.log("Request:");
        console.log("\tMethod: " +req.method);
        console.log("\tOriginal URL:"+req.originalUrl);
        console.log("\tBase URL:"+req.baseUrl);
        console.log("-----------------------------");
        next();
    });
    
    app.use((error,req, res, next) => {
        console.log(error.message)
        res.status(error.code || 500);
        res.send("404 - File Not Found :(");
    });
    
    
    app.get("/", (req,res) => {
        if (fs.existsSync("cache/index.html")){
            fs.readFileSync("cache/index.html",(err,data) => {
                if (!err){
                    res.send(data.toString());
                    return;
                }
            })
        }
        res.render("index",{"cache": true}, (err,html) => {
            if (err){ throw err;}
            res.send(html)
            fs.mkdirSync("cache",{recursive: true});
            fs.writeFileSync("cache/index.html",html,(err) => {
                if (err){
                    console.log(err.message)
                }
            })
        });
    })
    
    app.get("/blog/:article", (req,res) => {
        // serve cached page if possible
        if (fs.existsSync("cache"+req.baseUrl+req.path+".html")){
            fs.readFileSync("cache"+req.baseUrl+req.path+".html",(err,data) => {
                if (!err){
                    res.send(data.toString());
                    return;
                }
            })
        }
        // check db for wanted entry
        db.pool.query("select * from BlogEntries where url=(?);",[req.params.article],(err,rows,meta) => {
            if (err ){ //|(rows.length != 2)
                console.log(err.message | "Weird Amount of Entries from DB" ) ;
            }
    
            console.log(rows[0].heading);
            // render blogEntry template with queried data
            res.render("blogEntry",{heading: rows[0].heading, bloghtml: marked(rows[0].content)}, (err,html) => {
                if (err){ 
                    console.log(err.message);
                    res.end()
                    return
                }
                // send rendered page
                res.send(html)
                // save rendered page to cache
                fs.mkdirSync(path.dirname("cache"+req.baseUrl+req.path),{recursive: true});
                fs.writeFileSync("cache"+req.baseUrl+req.path+".html",html,(err) => {
                    if (err){ console.log(err.message) }
                })
            });
        });
    })
    
    
    app.get("/blog", (req,res) => {
        // would serve cached blogoverview, but as it's dependent on the amount on the blogentries it changes too much to be usefull
        // also: how to find if changed?
        // deleting cached on render of blog page not viable
        /* if (fs.existsSync("cache/blog.html")){
            fs.readFileSync("cache/blog.html",(err,data) => {
                if (!err){
                    res.send(data.toString());
                    return;
                }
            })
        } */
        db.pool.query("select url,heading,substring(content,1,200) as description from BlogEntries;",(err,rows,meta) => {
            if (err ){ 
                console.log(err.message ) ;
            }
            blogEntries = rows;
            for (let i=0; i< rows.length;i++){
                blogEntries[i].description = marked(rows[i].description)
            }
            console.log(rows[0].heading);
            res.render("blog",{blogEntries: blogEntries}, (err,html) => {
                if (err){ 
                    console.log(err.message);
                    res.end()
                    return
                }
                res.send(html)
                // would save blog overwiev to cache
                /*
                fs.mkdirSync(path.dirname("cache"+req.baseUrl+req.path),{recursive: true});
                fs.writeFileSync("cache"+req.baseUrl+req.path+".html",html,(err) => {
                    if (err){ console.log(err.message) }
                })*/
            });
        });
    })
    
    app.get("/*", (req,res) => {
        if (fs.existsSync("cache"+req.baseUrl+req.path+".html")){
            fs.readFileSync("cache"+req.baseUrl+req.path+".html",(err,data) => {
                if (!err){
                    res.send(data.toString());
                    return;
                }
                console.log(err.message)
            })
        }
        res.render((req.baseUrl+req.path).substr(1),{"cache": true}, (err,html) => {
            if (err){ throw err;}
            res.send(html)
            fs.mkdirSync(path.dirname("cache"+req.baseUrl+req.path),{recursive: true});
            fs.writeFileSync("cache"+req.baseUrl+req.path+".html",html,(err) => {
                if (err){
                    console.log(err.message)
                }
            })
        });
    })
    
    // put data from /new form into db
    app.post("/*", (req,res) =>{
        let url = req.body.heading.replace(/[;/?:@&=+$, ]/g ,"-")
        db.pool.query("insert into BlogEntries (heading,url,content) values ((?),(?),(?));",[req.body.heading,url,req.body.content]);
        res.status(301).redirect("/new")           
    })
    
    // no idea what this does
    app.use((error,req, res, next) => {
        console.log(error.message)
        res.status(error.code || 500);
        res.send("404 - File Not Found :(");
    });
    
    // starting the server
    app.listen(8080, () => console.log("Started Server on Port "+config.port));


  [1]: https://github.com/Paulemeister/WebBlog