It is not good to cache a DataReader object, and so, it is not acceptable.
DataReader is a read only forward only recordset of data. Once it a record is read, you can't get back to, As so, it is useless to cache DataReaders.