static isCacheableAsset(record) {
    const CACHEABLE_STATUS_CODES = new Set([200, 203, 206]);

    /** @type {Set<LH.Crdp.Network.ResourceType>} */
    const STATIC_RESOURCE_TYPES = new Set([
      NetworkRequest.TYPES.Font,
      NetworkRequest.TYPES.Image,
      NetworkRequest.TYPES.Media,
      NetworkRequest.TYPES.Script,
      NetworkRequest.TYPES.Stylesheet,
    ]);

    // It's not a request loaded over the network, caching makes no sense
    if (NetworkRequest.isNonNetworkRequest(record)) return false;


    return (
      CACHEABLE_STATUS_CODES.has(record.statusCode) &&
      STATIC_RESOURCE_TYPES.has(record.resourceType || 'Other')
    );
  }
Given a network record, returns whether we believe the asset is cacheable, i.e. it was a network
request that satisifed the conditions:

 1. Has a cacheable status code
 2. Has a resource type that corresponds to static assets (image, script, stylesheet, etc).

Allowing assets with a query string is debatable, PSI considered them non-cacheable with a similar
caveat.

TODO: Investigate impact in HTTPArchive, experiment with this policy to see what changes.

@param {LH.Artifacts.NetworkRequest} record
@return {boolean}