mirror of
https://github.com/arthurfiorette/axios-cache-interceptor.git
synced 2025-12-08 17:36:16 +00:00
79 lines
2.2 KiB
JavaScript
79 lines
2.2 KiB
JavaScript
const Axios = require('axios').default;
|
|
const express = require('express');
|
|
const { execSync } = require('child_process');
|
|
const interceptor = require('../../cjs');
|
|
const adapter = require('axios-cache-adapter');
|
|
|
|
const TIMES = 1_000_000;
|
|
|
|
const port = 8734;
|
|
const host = '0.0.0.0';
|
|
|
|
async function bench(axios) {
|
|
const init = Date.now();
|
|
|
|
let times = TIMES;
|
|
|
|
while (times--) {
|
|
await axios.get(`http://${host}:${port}/`);
|
|
}
|
|
|
|
return Date.now() - init;
|
|
}
|
|
|
|
function printResult(name, milliseconds, networkRequests, axiosTime) {
|
|
const seconds = milliseconds / 1000;
|
|
const axiosSeconds = axiosTime ? axiosTime / 1000 : seconds;
|
|
|
|
console.log();
|
|
console.log(`# ${name}`);
|
|
console.log(`Time: ${seconds}s`);
|
|
console.log(`Requests per second: ${(TIMES / seconds).toFixed(3)}/s`);
|
|
console.log(`Network requests: ${networkRequests} of ${TIMES}`);
|
|
console.log(
|
|
`Increase from pure axios: ${((100 * axiosSeconds) / seconds).toFixed(3)}%`
|
|
);
|
|
console.log();
|
|
}
|
|
|
|
(async () => {
|
|
const counter = { name: 'none' };
|
|
|
|
const app = express();
|
|
app.get('/', (_, res) => {
|
|
counter[counter.name] = counter[counter.name] + 1;
|
|
return res.json({ rnd: Math.random(), text: 'Hello World' });
|
|
});
|
|
|
|
const server = app.listen(port, host);
|
|
|
|
console.log(`Simulating ${TIMES} requests...`);
|
|
console.log(`Run at ${new Date().toUTCString()}`);
|
|
console.log(`Commit: ${execSync('git rev-parse HEAD').toString()}`);
|
|
|
|
counter.name = 'axios';
|
|
counter.axios = 0;
|
|
const withAxios = Axios.create();
|
|
const axiosTime = await bench(withAxios);
|
|
|
|
printResult('Raw axios', axiosTime, counter.axios);
|
|
|
|
counter.name = 'interceptor';
|
|
counter.interceptor = 0;
|
|
const withInterceptor = interceptor.setupCache(Axios.create(), { ttl: 1000 });
|
|
const interceptorTime = await bench(withInterceptor);
|
|
|
|
printResult('Axios Cache Interceptor', interceptorTime, counter.interceptor, axiosTime);
|
|
|
|
counter.name = 'adapter';
|
|
counter.adapter = 0;
|
|
const withAdapter = adapter.setup({
|
|
cache: { maxAge: 1000 }
|
|
});
|
|
const adapterTime = await bench(withAdapter);
|
|
|
|
printResult('Axios Cache Adapter', adapterTime, counter.adapter, axiosTime);
|
|
|
|
server.close();
|
|
})().catch(console.error);
|