• Главная
  • Карта сайта
Не найдено

Обмеження браузерів на виконання JavaScript

  1. Single Browser Threads
Версія для друку

Для виконання коду JavaScript в браузерах фактично використовується однопотокові обробка. І не має значення, браузер чи обробляє натискання на пункт меню, виробляє чи він генерацію HTML сторінки або виконує Ajax-запит - кожна подія додається в єдину чергу. Коли браузер звільняється від виконання чергового завдання, він отримує нове завдання і виконує її.

Single Browser Threads

Насправді жоден сучасний браузер не працює в однопоточном режимі. Наприклад, IE9 і Chrome створюють новий процес ОС для кожної закладки. Однак, все одно існує одна чергу подій для кожної сторінки, що переглядається, і в кожен момент часу може виконуватися тільки одна задача. Це вкрай необхідно, так як браузер або ваше додаток JavaScript можуть змінити генерується сторінку HTML до, під час або після її завантаження.

Зрозуміло, що браузер повинен обмежувати час виконання JavaScript-коду на сторінці. Якщо скрипт виконується занадто довго, він блокує додаток і потенційно може привести до нестабільності ОС. З цієї причини ви побачите страшне повідомлення браузера "Скрипт не відповідає":

З цієї причини ви побачите страшне повідомлення браузера Скрипт не відповідає:

Але як браузер визначає, що скрипт виконується занадто довго? Як і слід було очікувати, в найпопулярніших браузерах реалізуються різні методи і діють різні обмеження.

  • Internet Explorer обмежує виконання JavaScript 5 мільйонами операцій.
  • Firefox використовує обмеження за часом в 10 секунд.
  • Safari використовує обмеження по часу в 5 секунд.
  • Chrome не обмежує виконання, але визначає, коли браузер аварійно завершує роботу або не відповідає.
  • Opera не має обмежень і виконує JavaScript необмежений час. Однак, цей браузер не призводить до нестабільності в системі - ви можете відкрити інші закладки або закрити поточну сторінку, що виконує код.

Деякі з браузерів дозволяють вам налаштовувати параметри, що обмежують виконання JavaScript, але я б не рекомендував цього робити.

Так як же ми можемо запобігти оставновку виконання JavaScript браузером? Краще рішення - уникати завдань з тривалим часом виконання. В ідеалі кожен обробник подій не повинен виконувався більш декількох десятків мілісекунд. Завдання з інтенсивною обробкою даних, як правило, слід виконувати на сервері і отримувати оброблені дані при перезавантаженні сторінки або Ajax-запитом.

Однак, я усвідомлюю, що зменшення обробки даних на стороні клієнта в сучасних JavaScript-додатків навряд чи можливо. На щастя, існує Рішення цієї проблеми.

Стаття заснована на публікації "JavaScript Execution and Browser Limits" .

Так як же ми можемо запобігти оставновку виконання JavaScript браузером?
Провайдеры:
  • 08.09.2015

    Batyevka.NET предоставляет услуги доступа к сети Интернет на территории Соломенского района г. Киева.Наша миссия —... 
    Читать полностью

  • 08.09.2015
    IPNET

    Компания IPNET — это крупнейший оператор и технологический лидер на рынке телекоммуникаций Киева. Мы предоставляем... 
    Читать полностью

  • 08.09.2015
    Boryspil.Net

    Интернет-провайдер «Boryspil.net» начал свою работу в 2008 году и на данный момент является одним из крупнейших поставщиков... 
    Читать полностью

  • 08.09.2015
    4OKNET

    Наша компания работает в сфере телекоммуникационных услуг, а именно — предоставлении доступа в сеть интернет.Уже... 
    Читать полностью

  • 08.09.2015
    Телегруп

    ДП «Телегруп-Украина» – IT-компания с 15-летним опытом работы на рынке телекоммуникационных услуг, а также официальный... 
    Читать полностью

  • 08.09.2015
    Софтлинк

    Высокая скоростьМы являемся участником Украинского центра обмена трафиком (UA — IX) с включением 10 Гбит / сек... 
    Читать полностью