use file_put_contents for cache