isResponseCacheable()

in workbox-v4.3.1/workbox-cacheable-response.dev.js [83:129]


    isResponseCacheable(response) {
      {
        assert_mjs.assert.isInstance(response, Response, {
          moduleName: 'workbox-cacheable-response',
          className: 'CacheableResponse',
          funcName: 'isResponseCacheable',
          paramName: 'response'
        });
      }

      let cacheable = true;

      if (this._statuses) {
        cacheable = this._statuses.includes(response.status);
      }

      if (this._headers && cacheable) {
        cacheable = Object.keys(this._headers).some(headerName => {
          return response.headers.get(headerName) === this._headers[headerName];
        });
      }

      {
        if (!cacheable) {
          logger_mjs.logger.groupCollapsed(`The request for ` + `'${getFriendlyURL_mjs.getFriendlyURL(response.url)}' returned a response that does ` + `not meet the criteria for being cached.`);
          logger_mjs.logger.groupCollapsed(`View cacheability criteria here.`);
          logger_mjs.logger.log(`Cacheable statuses: ` + JSON.stringify(this._statuses));
          logger_mjs.logger.log(`Cacheable headers: ` + JSON.stringify(this._headers, null, 2));
          logger_mjs.logger.groupEnd();
          const logFriendlyHeaders = {};
          response.headers.forEach((value, key) => {
            logFriendlyHeaders[key] = value;
          });
          logger_mjs.logger.groupCollapsed(`View response status and headers here.`);
          logger_mjs.logger.log(`Response status: ` + response.status);
          logger_mjs.logger.log(`Response headers: ` + JSON.stringify(logFriendlyHeaders, null, 2));
          logger_mjs.logger.groupEnd();
          logger_mjs.logger.groupCollapsed(`View full response details here.`);
          logger_mjs.logger.log(response.headers);
          logger_mjs.logger.log(response);
          logger_mjs.logger.groupEnd();
          logger_mjs.logger.groupEnd();
        }
      }

      return cacheable;
    }