docs: def put(self, content_bytes):
          '''
          Save the `bytes` under a key derived from `path` in Memcache.
  
          :return: A string representing the content path if it is stored.
          :rettype: string or None
          '''
          derived_path = self.context.request.url
          over_max, content_size = self.content_size_exceeded_max(content_bytes)
  
          logger.debug('[{log_prefix}] content size in bytes: {size}'
              ' | is over max? {over_max} | skip storage? {skip}'.format(
              log_prefix=LOG_PREFIX, size=content_size, over_max=over_max,
              skip=self.skip_storage()))
  
          if (over_max and self.skip_storage()):
              # Short-circuit the storage when configured to skip large items
              logger.debug('[{log_prefix}] skipping storage: {content_size} '
                             'exceeds item_size_max of {max_size}'.format(
                             log_prefix=LOG_PREFIX, content_size=content_size,
                             max_size=self.item_size_max()))
              return None
  
          self.storage.set(
              self.timestamp_key_for(derived_path), datetime.utcnow(),
              time=self.context.config.RESULT_STORAGE_EXPIRATION_SECONDS
          )
          self.storage.set(
              self.result_key_for(derived_path), content_bytes,
              time=self.context.config.RESULT_STORAGE_EXPIRATION_SECONDS
          )
  
          return derived_path