mirror of
https://github.com/Snigdha-OS/Snigdha-OS.github.io.git
synced 2025-09-06 12:45:18 +02:00
⚡️ perf: reprogram the factors
This commit is contained in:
@@ -1,18 +1,34 @@
|
|||||||
export async function measureNetworkSpeed(): Promise<number> {
|
export async function measureNetworkSpeed(): Promise<number> {
|
||||||
|
try {
|
||||||
const startTime = performance.now();
|
const startTime = performance.now();
|
||||||
const response = await fetch('https://www.cloudflare.com/cdn-cgi/trace', { cache: 'no-store' });
|
|
||||||
|
const response = await fetch('https://www.cloudflare.com/cdn-cgi/trace', {
|
||||||
|
cache: 'no-store',
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!response.ok) {
|
||||||
|
throw new Error(`Failed to fetch, status: ${response.status}`);
|
||||||
|
}
|
||||||
|
|
||||||
const endTime = performance.now();
|
const endTime = performance.now();
|
||||||
const duration = endTime - startTime;
|
const duration = endTime - startTime;
|
||||||
|
|
||||||
if (!response.ok) {
|
// Check if Content-Length is available, if not fall back to measuring response size from text.
|
||||||
throw new Error('Failed to measure network speed');
|
const contentLength = response.headers.get('Content-Length');
|
||||||
}
|
const size = contentLength ? parseInt(contentLength, 10) : new Blob([await response.text()]).size;
|
||||||
|
|
||||||
const data = await response.text();
|
if (size === 0) {
|
||||||
const size = new Blob([data]).size;
|
throw new Error('Response has no content size');
|
||||||
|
}
|
||||||
|
|
||||||
// Calculate speed in Mbps (megabits per second)
|
// Calculate speed in Mbps (megabits per second)
|
||||||
const speedMbps = (size * 8) / (duration / 1000) / 1000000;
|
const speedMbps = (size * 8) / (duration / 1000) / 1000000;
|
||||||
|
|
||||||
return Math.round(speedMbps * 100) / 100;
|
const roundedSpeed = Math.round(speedMbps * 100) / 100;
|
||||||
|
console.log(`Measured network speed: ${roundedSpeed} Mbps`);
|
||||||
|
return roundedSpeed;
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error measuring network speed:', error);
|
||||||
|
throw new Error('Network speed measurement failed');
|
||||||
|
}
|
||||||
}
|
}
|
Reference in New Issue
Block a user