Добавить в корзинуПозвонить
Найти в Дзене
Всё обо всём

Почему зависает ChatGPT и как его ускорить за пару минут ? Простой способ без программ и расширений

Если вы часто сидите в одном длинном диалоге с ChatGPT, то наверняка замечали: сначала всё работает нормально, а потом чат начинает подвисать, дёргаться, медленно прокручиваться и иногда даже тормозить при вводе текста. Причина чаще всего простая: чем длиннее переписка, тем больше сообщений браузер держит прямо на странице. Весь этот огромный чат остаётся в DOM, а значит браузеру приходится постоянно отрисовывать, пересчитывать и хранить большое количество элементов. Чем больше текста и сообщений в одном диалоге, тем тяжелее становится странице, особенно если чат очень длинный. Проще говоря: проблема не всегда в самом ChatGPT, а в том, что браузеру становится тяжело тянуть огромную ленту сообщений. Есть простой способ разгрузить страницу: убрать из DOM старые сообщения и оставить только последние. Тогда браузеру становится легче, и чат начинает работать заметно быстрее. Делается это через консоль браузера. Нажимаете F12, открываете вкладку Console и вставляете туда специальный скрипт.
Оглавление

Если вы часто сидите в одном длинном диалоге с ChatGPT, то наверняка замечали: сначала всё работает нормально, а потом чат начинает подвисать, дёргаться, медленно прокручиваться и иногда даже тормозить при вводе текста.

Причина чаще всего простая: чем длиннее переписка, тем больше сообщений браузер держит прямо на странице. Весь этот огромный чат остаётся в DOM, а значит браузеру приходится постоянно отрисовывать, пересчитывать и хранить большое количество элементов. Чем больше текста и сообщений в одном диалоге, тем тяжелее становится странице, особенно если чат очень длинный.

Проще говоря: проблема не всегда в самом ChatGPT, а в том, что браузеру становится тяжело тянуть огромную ленту сообщений.

Как это исправить

Есть простой способ разгрузить страницу: убрать из DOM старые сообщения и оставить только последние. Тогда браузеру становится легче, и чат начинает работать заметно быстрее.

Делается это через консоль браузера.

Нажимаете F12, открываете вкладку Console и вставляете туда специальный скрипт.

Если консоль открыта впервые, браузер может не дать сразу вставить код. Тогда нужно вручную ввести команду:

allow pasting

После этого можно вставлять сам код:

(() => {
'use strict';

// Если уже запущен — сначала аккуратно выключаем старую копию
if (window.__chatgptAntiLagPro?.cleanup) {
window.__chatgptAntiLagPro.cleanup();
}

const CONFIG = {
KEEP_LAST: 2, // сколько последних сообщений держать в DOM
NEAR_BOTTOM_PX: 220, // считать, что пользователь "внизу" чата
PANEL_RIGHT: 20,
PANEL_BOTTOM: 20
};

const state = {
enabled: true,
archived: [], // [{ node, parent, nextSibling }]
placeholder: null,
observer: null,
rafScheduled: false,
restoring: false,
hiddenCount: 0
};

function getMessages() {
return Array.from(document.querySelectorAll('[data-message-author-role]'));
}

function isConnectedNode(node) {
return !!node && node.isConnected;
}

function isNearBottom() {
const scroller =
document.scrollingElement ||
document.documentElement ||
document.body;

const distance = scroller.scrollHeight - (scroller.scrollTop + window.innerHeight);
return distance <= CONFIG.NEAR_BOTTOM_PX;
}

function makePlaceholder() {
const wrap = document.createElement('div');
wrap.id = 'chatgpt-anti-lag-pro-placeholder';
wrap.style.cssText = [
'margin:12px auto',
'max-width:900px',
'padding:10px 12px',
'border:1px solid rgba(127,127,127,.25)',
'border-radius:12px',
'background:rgba(127,127,127,.08)',
'color:inherit',
'font:13px/1.4 sans-serif',
'opacity:.95'
].join(';');

const top = document.createElement('div');
top.style.cssText = 'display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap';

const text = document.createElement('div');
text.id = 'chatgpt-anti-lag-pro-text';
text.textContent = 'Ранние сообщения скрыты';

const actions = document.createElement('div');
actions.style.cssText = 'display:flex;gap:8px;flex-wrap:wrap';

const restoreBtn = document.createElement('button');
restoreBtn.textContent = 'Показать всё';
restoreBtn.style.cssText = buttonCss();
restoreBtn.onclick = () => restoreAll();

const disableBtn = document.createElement('button');
disableBtn.textContent = 'Выключить Anti-Lag';
disableBtn.style.cssText = buttonCss();
disableBtn.onclick = () => {
state.enabled = false;
restoreAll();
updatePanel();
};

actions.appendChild(restoreBtn);
actions.appendChild(disableBtn);
top.appendChild(text);
top.appendChild(actions);
wrap.appendChild(top);

return wrap;
}

function buttonCss() {
return [
'border:0',
'border-radius:10px',
'padding:7px 10px',
'cursor:pointer',
'background:#2b2b2b',
'color:#fff',
'font:12px sans-serif'
].join(';');
}

function updatePlaceholder() {
if (!state.placeholder) return;
const text = state.placeholder.querySelector('#chatgpt-anti-lag-pro-text');
if (text) {
text.textContent = `Скрыто ранних сообщений: ${state.hiddenCount}`;
}
}

function ensurePlaceholder(beforeNode) {
if (!state.placeholder) {
state.placeholder = makePlaceholder();
}
if (!state.placeholder.isConnected && beforeNode?.parentNode) {
beforeNode.parentNode.insertBefore(state.placeholder, beforeNode);
}
updatePlaceholder();
}

function removePlaceholderIfEmpty() {
if (state.hiddenCount === 0 && state.placeholder?.isConnected) {
state.placeholder.remove();
}
}

function archiveOldMessages() {
if (!state.enabled || state.restoring) return;

const messages = getMessages();
if (messages.length <= CONFIG.KEEP_LAST) {
removePlaceholderIfEmpty();
return;
}

const toArchive = messages.slice(0, messages.length - CONFIG.KEEP_LAST)
.filter(node => node !== state.placeholder);

if (!toArchive.length) return;

const keepScrollPinned = isNearBottom();
const anchor = toArchive[0];

ensurePlaceholder(anchor);

for (const node of toArchive) {
if (!isConnectedNode(node)) continue;
if (node === state.placeholder) continue;

state.archived.push({
node,
parent: node.parentNode,
nextSibling: node.nextSibling
});

node.remove();
state.hiddenCount += 1;
}

updatePlaceholder();
updatePanel();

if (keepScrollPinned) {
requestAnimationFrame(() => {
window.scrollTo(0, document.documentElement.scrollHeight);
});
}
}

function restoreAll() {
if (state.restoring) return;
state.restoring = true;

try {
for (const item of state.archived) {
const { node, parent, nextSibling } = item;
if (!node || !parent) continue;

if (nextSibling && nextSibling.parentNode === parent) {
parent.insertBefore(node, nextSibling);
} else {
parent.appendChild(node);
}
}

state.archived = [];
state.hiddenCount = 0;

if (state.placeholder?.isConnected) {
state.placeholder.remove();
}

updatePanel();
} finally {
state.restoring = false;
}
}

function updatePanel() {
const count = document.getElementById('chatgpt-anti-lag-pro-count');
const toggle = document.getElementById('chatgpt-anti-lag-pro-toggle');
const keep = document.getElementById('chatgpt-anti-lag-pro-keep');

if (count) count.textContent = String(state.hiddenCount);
if (toggle) toggle.textContent = state.enabled ? 'ON' : 'OFF';
if (keep) keep.textContent = String(CONFIG.KEEP_LAST);

updatePlaceholder();
}

function scheduleTrim() {
if (state.rafScheduled) return;
state.rafScheduled = true;

requestAnimationFrame(() => {
state.rafScheduled = false;
archiveOldMessages();
});
}

function createPanel() {
const old = document.getElementById('chatgpt-anti-lag-pro-panel');
if (old) old.remove();

const panel = document.createElement('div');
panel.id = 'chatgpt-anti-lag-pro-panel';
panel.style.cssText = [
'position:fixed',
`right:${CONFIG.PANEL_RIGHT}px`,
`bottom:${CONFIG.PANEL_BOTTOM}px`,
'z-index:2147483647',
'background:rgba(17,17,17,.96)',
'color:#fff',
'padding:12px 14px',
'border-radius:14px',
'font:13px/1.4 sans-serif',
'box-shadow:0 10px 30px rgba(0,0,0,.35)',
'min-width:220px',
'backdrop-filter:blur(6px)'
].join(';');

panel.innerHTML = `
<div style="font-weight:700;margin-bottom:8px;">⚡ Anti-Lag Pro</div>
<div style="margin-bottom:4px;">Скрыто: <span id="chatgpt-anti-lag-pro-count">0</span></div>
<div style="margin-bottom:10px;">Держать в DOM: <span id="chatgpt-anti-lag-pro-keep">${CONFIG.KEEP_LAST}</span></div>
<div style="display:flex;gap:8px;flex-wrap:wrap;">
<button id="chatgpt-anti-lag-pro-toggle" style="${buttonCss()}">ON</button>
<button id="chatgpt-anti-lag-pro-show" style="${buttonCss()}">Показать всё</button>
<button id="chatgpt-anti-lag-pro-stop" style="${buttonCss()}">Стоп</button>
</div>
`;

document.body.appendChild(panel);

document.getElementById('chatgpt-anti-lag-pro-toggle').onclick = () => {
state.enabled = !state.enabled;
if (!state.enabled) {
restoreAll();
} else {
scheduleTrim();
}
updatePanel();
};

document.getElementById('chatgpt-anti-lag-pro-show').onclick = () => {
restoreAll();
};

document.getElementById('chatgpt-anti-lag-pro-stop').onclick = () => {
cleanup();
};
}

function cleanup() {
try {
state.enabled = false;
if (state.observer) {
state.observer.disconnect();
}
restoreAll();

const panel = document.getElementById('chatgpt-anti-lag-pro-panel');
if (panel) panel.remove();

if (state.placeholder?.isConnected) {
state.placeholder.remove();
}
} finally {
delete window.__chatgptAntiLagPro;
}
}

createPanel();

state.observer = new MutationObserver(() => {
scheduleTrim();
});

state.observer.observe(document.body, {
childList: true,
subtree: true
});

window.__chatgptAntiLagPro = {
cleanup,
restoreAll,
state,
config: CONFIG
};

scheduleTrim();
updatePanel();

console.log('⚡ Anti-Lag Pro started');
})();

Что делает этот скрипт

Он автоматически скрывает старые сообщения из страницы и оставляет в DOM только несколько последних. За счёт этого снижается нагрузка на браузер, и длинный чат перестаёт так сильно тормозить.

При этом скрипт добавляет маленькую панель управления, где можно:

  • включить или выключить режим;
  • показать все сообщения обратно;
  • полностью остановить скрипт.

То есть это не удаление чата, а просто временная разгрузка страницы.

Почему это помогает

Потому что браузеру уже не нужно постоянно держать перед глазами всю огромную переписку. Чем меньше элементов остаётся в DOM, тем легче работает интерфейс.

Особенно хорошо это помогает в очень длинных чатах, где сообщений уже много и страница начинает откровенно лагать.

Безопасно ли это

Коротко: да, если вы вставляете именно этот код.

Он не отправляет данные куда-то на сторону, не ворует аккаунт, не просит пароль и не лезет за пределы открытой страницы. Он просто работает с отображением сообщений внутри текущей вкладки.

Но общее правило простое: в консоль нельзя вставлять непонятный код из случайных источников. Если код проверенный и вы понимаете, что он делает, тогда использовать можно спокойно.

Что можно изменить в коде под себя

Если хотите, чтобы на экране оставалось больше видимых сообщений, нужно изменить вот эту строку:

KEEP_LAST: 2

Цифра 2 означает, что в DOM будут оставаться только два последних сообщения, а более ранние скрипт будет скрывать.

Например:

  • KEEP_LAST: 5 — оставить 5 последних сообщений
  • KEEP_LAST: 10 — оставить 10 последних сообщений
  • KEEP_LAST: 20 — оставить 20 последних сообщений

Чем больше число, тем больше сообщений будет видно одновременно.

Итог

Если ChatGPT начинает виснуть в длинном диалоге, проблема часто в том, что браузер перегружается из-за слишком большой ленты сообщений. Этот скрипт решает проблему просто: скрывает старые сообщения из DOM, разгружает страницу и делает чат заметно быстрее.

Для тех, кто работает с длинными переписками каждый день, это реально удобное решение.