code: func (c *cache) Store(res *Resource, keys ...string) error {
  	var buf = &bytes.Buffer{}
  
  	if length, err := strconv.ParseInt(res.Header().Get("Content-Length"), 10, 64); err == nil {
  		if _, err = io.CopyN(buf, res, length); err != nil {
  			return err
  		}
  	} else if _, err = io.Copy(buf, res); err != nil {
  		return err
  	}
  
  	for _, key := range keys {
  		delete(c.stale, key)
  
  		if err := c.storeBody(buf, key); err != nil {
  			return err
  		}
  
  		if err := c.storeHeader(res.Status(), res.Header(), key); err != nil {
  			return err
  		}
  	}
  
  	return nil
  }
docs: // Store a resource against a number of keys