|  | @@ -1097,8 +1097,9 @@ enum {
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  |  	ACCESS_CONTROL_ALLOW_ORIGIN,
 | 
	
		
			
				|  |  |  	ERROR_PAGES,
 | 
	
		
			
				|  |  | -	CONFIG_TCP_NODELAY, /* Prepended CONFIG_ to avoid conflict with the socket
 | 
	
		
			
				|  |  | -                           option typedef TCP_NODELAY */
 | 
	
		
			
				|  |  | +	CONFIG_TCP_NODELAY, /* Prepended CONFIG_ to avoid conflict with the
 | 
	
		
			
				|  |  | +                         * socket option typedef TCP_NODELAY. */
 | 
	
		
			
				|  |  | +	STATIC_FILE_MAX_AGE,
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	NUM_OPTIONS
 | 
	
		
			
				|  |  |  };
 | 
	
	
		
			
				|  | @@ -1169,6 +1170,9 @@ static struct mg_option config_options[] = {
 | 
	
		
			
				|  |  |      {"access_control_allow_origin", CONFIG_TYPE_STRING, "*"},
 | 
	
		
			
				|  |  |      {"error_pages", CONFIG_TYPE_DIRECTORY, NULL},
 | 
	
		
			
				|  |  |      {"tcp_nodelay", CONFIG_TYPE_NUMBER, "0"},
 | 
	
		
			
				|  |  | +    {"_experimental_static_file_max_age",
 | 
	
		
			
				|  |  | +     CONFIG_TYPE_NUMBER,
 | 
	
		
			
				|  |  | +     "3600"}, /* TODO: redefine parameter */
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      {NULL, CONFIG_TYPE_UNKNOWN, NULL}};
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -2172,13 +2176,13 @@ send_no_cache_header(struct mg_connection *conn)
 | 
	
		
			
				|  |  |  static int
 | 
	
		
			
				|  |  |  send_static_cache_header(struct mg_connection *conn)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | -	/* TODO: Get max age (in seconds) for static files from conn->ctx */
 | 
	
		
			
				|  |  | -	int max_age = 60 /* + conn->ctx.TODO */;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +	int max_age = atoi(conn->ctx->config[STATIC_FILE_MAX_AGE]);
 | 
	
		
			
				|  |  |  	if (max_age <= 0) {
 | 
	
		
			
				|  |  |  		return send_no_cache_header(conn);
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +	/* Use "Cache-Control: max-age" instead of "Expires" header.
 | 
	
		
			
				|  |  | +	 * Reason: see https://www.mnot.net/blog/2007/05/15/expires_max-age */
 | 
	
		
			
				|  |  |  	return mg_printf(conn, "Cache-Control: max-age=%u\r\n", max_age);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 |