Build the same cache key when $fields:

* is a string containing fields separated by comma.
* is an array with one element being a string containing fields
separated by comma.
* is an array containing fields.

In every case, the cache key will be the same when:
 * fields (which can contain expressions) are duplicated.
 * fiels are empty.