code: def _GetCacheFileMetadataHeaderOffset(self, file_object):
      
      file_object.seek(-4, os.SEEK_END)
      file_offset = file_object.tell()
  
      metadata_size_map = self._GetDataTypeMap('uint32be')
  
      try:
        metadata_size, _ = self._ReadStructureFromFileObject(
            file_object, file_offset, metadata_size_map)
      except (ValueError, errors.ParseError) as exception:
        raise errors.UnableToParseFile(
            'Unable to parse cache file metadata size with error: {0!s}'.format(
                exception))
  
  
      # Firefox splits the content into chunks.
      number_of_chunks, remainder = divmod(metadata_size, self._CHUNK_SIZE)
      if remainder != 0:
        number_of_chunks += 1
  
      # Each chunk in the cached record is padded with two bytes.
      # Skip the first 4 bytes which contains a hash value of the cached content.
      return metadata_size + (number_of_chunks * 2) + 4
docs: Determines the offset of the cache file metadata header.
  
       This method is inspired by the work of James Habben:
       https://github.com/JamesHabben/FirefoxCache2
  
      Args:
        file_object (dfvfs.FileIO): a file-like object.
  
      Returns:
        int: offset of the file cache metadata header relative to the start
          of the file.
  
      Raises:
        IOError: if the start of the cache file metadata could not be determined.