aws-observability / aws-rum-web

Amazon CloudWatch RUM Web Client
Apache License 2.0
114 stars 65 forks source link

feat: getResourceType() uses initiatorType when file extension missing #451

Closed williazz closed 9 months ago

williazz commented 9 months ago

This is a follow up from an issue spotted in #450 and #448. See https://github.com/aws-observability/aws-rum-web/pull/450#discussion_r1330455383

The ResourcePlugin mislabels fileType. Currently, fileType maps to buckets of file extensions from PerformanceResourceTiming.name (e.g. ".jpg" and ".png" map to "image"). However, file extensions cannot be trusted to exist, such as during redirects. When extensions are missing, events are mislabelled as "other".

I have considered two solutions:

  1. Use initiatorType to infer fileType when file extension is missing.
  2. Remove the idea of "fileType" altogether and only use initiatorType.

My recommendation is (1), which this PR implements. This is the least obtrusive method and we can always go to (2) later. If we were implementing this from scratch, I would instead recommend (2) because fileType is NOT a W3C concept found in the PerformanceResourceTiming schema.

To help me review, please also read initiatorType documentation to see if I missed any mappings from initiatorType -> fileType.


By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

qhanam commented 9 months ago

My recommendation is (1), which this PR implements... If we were implementing this from scratch, I would instead recommend (2) because fileType is NOT a W3C schema found in the PerformanceResourceTiming schema.

I agree -- love this analysis. I think we should consider this for the next major version.