diff --git a/html.c b/html.c index 6882729..f8f7791 100644 --- a/html.c +++ b/html.c @@ -708,6 +708,8 @@ int html_get_handler(d_char *req, char *q_path, char **body, int *b_size, char * int status = 404; snac snac; char *uid, *p_path; + int cache = 1; + char *v; xs *l = xs_split_n(q_path, "/", 2); @@ -718,13 +720,17 @@ int html_get_handler(d_char *req, char *q_path, char **body, int *b_size, char * return 404; } + /* check if server config variable 'disable_cache' is set */ + if ((v = xs_dict_get(srv_config, "disable_cache")) && xs_type(v) == XSTYPE_TRUE) + cache = 0; + p_path = xs_list_get(l, 2); if (p_path == NULL) { /* public timeline */ xs *h = xs_str_localtime(0, "%Y-%m.html"); - if (history_mtime(&snac, h) > timeline_mtime(&snac)) { + if (cache && history_mtime(&snac, h) > timeline_mtime(&snac)) { snac_debug(&snac, 1, xs_fmt("serving cached local timeline")); *body = history_get(&snac, h); @@ -748,7 +754,7 @@ int html_get_handler(d_char *req, char *q_path, char **body, int *b_size, char * if (!login(&snac, req)) status = 401; else { - if (history_mtime(&snac, "timeline.html_") > timeline_mtime(&snac)) { + if (cache && history_mtime(&snac, "timeline.html_") > timeline_mtime(&snac)) { snac_debug(&snac, 1, xs_fmt("serving cached timeline")); *body = history_get(&snac, "timeline.html_");