More specifically, can query results be cached on looker server, so that if the remote database connection is lost, user still can display charts/results using the data cached without having to run queries against remote databases?

If a query is cached and its connection is subsequently rendered invalid (say, by inputting an improper db user password in the connection's settings) the query can't be re-run from cache. Per my understanding, a cached query is associated with a unique hash, which is a conglomerate of various parameters (connection, model, explore, etc). When a query is run, its hash is compared to the hashes of cached queries. If the hashes don't match up, Looker runs the query against the external db. Rendering the connection invalid by altering its settings may change subsequent query hashes and prevent them from matching up with the hashes of cached queries.

We have a reporting database setup on the cloud which may not be always available for access. And the data is not updated very frequently, most of the time they are updated weekly. Today if the database is down, user is not able to view charts from looker, if there is a way to extract data from cache when the database connection is down, that will improve the usability a lot for us.