replace apcu caching with opcache and re-enable caching. #13
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.
This PR uses PHP's builtin opcache extension to cache Bisq's large JSON files between http requests, instead of the apcu extension which was slow and previously disabled.
Opcache is intended for caching PHP code files. This patch uses a little trick to write out the JSON data structures as "php code" to a file on disk, and then each cache read calls PHP's include() function to read the file, which internally accesses the parsed data from RAM rather than from disk. The pre-existing caching logic in filecache.class.php is smart enough to invalidate the cache key whenever one of the Bisq JSON files is updated by the Bisq java app. Thus, the cache never gets stale.
In local testing on a laptop the /trades api went from approx 25 requests/sec to 1450 reqs/sec and front page load from about 20 reqs/sec to 230 reqs/sec.