[metascraper-helpers] jsonld caching #225
Merged
+47
−20
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The current implementation of the
$jsonld
usesjsonld
which is wrapped bymem
.Unfortunately, because the use of
mem
does not actually specify any cache limitations, all cache entries are just persisted forever. This means that if at any point you scrape the same URL twice, updates to thescript[type="application/ld+json"]
on the page will never be parsed, forcing you to restart the server.I don't think this was intentional behaviour, so this PR replaces use of
mem
withmemoize-one
which is used elsewhere in the codebase already. This will only cache the result for the last invoked call, which for the purposes of what caching the parse results ofjsonld
achieves, is the same, without the same drawbacks for subsequent calls with the same URL, but different content.