Tomut0
@Tomut0
Простой студент, изучающий глубоководье IT.

Пинг при запросе уменьшается при перезагрузке страницы?

Создал компонент PingBadge.vue, в нём занёс следующее:
<script setup>
import {CloudIcon} from "@heroicons/vue/24/solid/index.js";
import {defineAsyncComponent, onMounted, ref} from "vue";
import {__} from "@/trans.js";

const Badge = defineAsyncComponent(() => {
    return import("@/Components/Badge.vue")
});

const props = defineProps({
    fqdn: {
        type: String,
    }
});

const pingTime = ref(0);

function measurePing() {
        const start = performance.now();
        fetch(`https://${props.fqdn}:8080/`, {
            mode: 'no-cors',
            cache: 'no-store'
        }).then(() => pingTime.value = Math.round(performance.now() - start));
}

onMounted(() => {
    measurePing();
});
</script>
<template>
    <Badge :icon="CloudIcon">{{ pingTime + " " + __('general.units.ms') }}</Badge>
</template>


Казалось бы, всё прозрачно! Но нет.
При первой загрузке страницы - пинг невероятно велик, а при повторной – вроде как нормализуется.
Использование принудительной перезагрузки через CTRL + F5 вроде как показывает стабильные результаты пинга. Очень похоже на то, что во всём виноват кэш.

Сам пинг по себе крайне нестабилен, что, в общем-то странно:
при частой перезагрузке бывает плавает от 60 до 100 и выше.
(и нет, сервер не виноват, обычный icmp-пинг даёт стабильные результаты).

Вроде бы поставил режим в fetch на no-store (ещё пробовал с reload),
соотвественно, он должен всегда делать запрос и никогда не брать его из кэша – не помогло.

Пытался вызывать measurePing() сразу после загрузки асинхронного компонента Badge, ну, вдруг влияет как-то.
Ставил onMounted(async () => {}), пытался аппроксимировать результаты путём отправки нескольких запросов – не помогло.

Какие есть мысли?
  • Вопрос задан
  • 99 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы