Add custom cache key functionality

Had to create a new PR because my old repo had old merge commits. So made a new repo and PR to clean the commits up as asked in the old PR.

Adds the option to set a custom cache key to be used instead of the uri based one.
I hope this is alright. Should be similar to the last PR that was made for this. I am new to writing tests and feedback is very welcome. If something should be changed comment please.

Thanks
I think an emtpy string is perfectly fine here. It doesnt breake anything and works as intended like every not empty string. I see no reason here to prevent the caller fom choosing the key to his likes.