porušení dlouhé spuštění javascriptu trvalo xx ms
<p>nedávno jsem dostal tento druh varování a tohle je poprvé, co jsem ho dostal:</p><pre class="lang-none prettyprint-override"><code>[violation] long running javascript task took 234ms [violation] forced reflow while executing javascript took 45ms </code></pre><p>pracuji na skupinovém projektu a nemám tušení, odkud pochází. nikdy předtím. najednou se objeví, když se do projektu zapojí někdo jiný. jak zjistím, který soubor/funkce způsobuje takové varování? hledal jsem odpověď, ale hlavně řešení, jak to vyřešit. nemohu to vyřešit, když nemůžu najít ani zdroj problému.</p><p>poznámky: v tomto případě se varování objeví pouze na chromu. snažil jsem se použít edge, nedostal jsem žádná podobná varování. ještě jsem to nezkoušel na mozille.</p><p>aktualizace: dokonce dostanu chybu z <code>jquery.min.js</code> říká:</p><pre class="lang-none prettyprint-override"><code>[violation] handler took 231ms of runtime (50ms allowed) jquery.min.js:2 </code></pre>
<p><em> aktualizovat: chrome 58+ skryl tyto a další ladicí zprávy ve výchozím nastavení. chcete-li je zobrazit, klepněte na šipku vedle položky „info&ldquo; a vyberte položku „verbose&ldquo;. </em></p><p><em> aktualizace 2: chrome 57 je ve výchozím nastavení zapnut. chcete-li je znovu zapnout, musíte povolit filtry a zrušit zaškrtnutí políčka „skrýt porušení&ldquo;. </em></p><blockquote> <p>najednou se objeví, když se do projektu zapojí někdo jiný</p> </blockquote><p>myslím, že je to více pravděpodobné, že jste aktualizovali na chrome 56. toto varování je (imo) báječná nová funkce - prosím, vypněte ji pouze v případě, že jste zoufalí a váš hodnotitel vás odtrhne. základní problémy jsou v jiných prohlížečích, ale prohlížeče vám neříkají, že je problém. vstupenka chromium je zde, ale na ní není žádná zajímavá diskuse: <a href="https://bugs.chromium.org/p/chromium/issues/detail?id=662497">https://bugs.chromium.org/p/chromium/issues/detail?id=662497</a> </p><p>tyto zprávy jsou varování namísto chyb, protože to opravdu nebude způsobovat velké problémy. to může způsobit upuštění rámců nebo jinak způsobit méně hladký zážitek.</p><p>stojí za to prozkoumat a upevnit, aby se zvýšila kvalita vaší aplikace. způsob, jak toho dosáhnout, je věnovat pozornost okolnostem, ve kterých se zprávy zobrazují, a provádět testování výkonu, aby se zúžit, kde se problém vyskytuje. nejjednodušším způsobem, jak spustit testování výkonu, je vložit nějaký kód takto:</p><pre><code>function somemethodithinkmightbeslow() { const starttime = performance.now(); // do the normal stuff for this function const duration = performance.now() - starttime; console.log(`somemethodithinkmightbeslow took ${duration}ms`); } </code></pre><p>chcete-li být pokročilejší, můžete také použít profiler chrome: <a href="https://developers.google.com/web/tools/chrome-devtools/rendering-tools/">https://developers.google.com/web/tools/chrome-devtools/rendering-tools/</a> </p><p>nebo použijte knihovnu benchmarking, jako je tato: <a href="https://benchmarkjs.com/">https://benchmarkjs.com/</a> </p><p>jakmile najdete nějaký kód, který trvá dlouhou dobu (50 ms je práh chrome), máte několik možností:</p><ol> <li>vystřihněte některé z těchto úkolů, které mohou být zbytečné</li> <li>zjistěte, jak dělat stejný úkol rychleji</li> <li>rozdělte kód do několika asynchronních kroků</li> </ol><p>(1) a (2) může být obtížné nebo nemožné. ale někdy je to opravdu snadné a měly by to být vaše první pokusy. v případě potřeby by mělo být vždy možné (3). k tomu budete používat něco jako</p><pre><code>settimeout(functiontorunverysoonbutnotnow); </code></pre><p>nebo</p><pre><code>// this one is not available natively in ie, but there are polyfills available. promise.resolve().then(functiontorunverysoonbutnotnow); </code></pre><p>více o asynchronní povaze javascriptu si můžete přečíst zde:</p><p> <a href="http://blog.carbonfive.com/2013/10/27/the-javascript-event-loop-explained/">http://blog.carbonfive.com/2013/10/27/the-javascript-event-loop-explained/</a> </p>
zrejme chyba v Chrome, občas sa to stane aj mne..ale pomôže reštart prehliadača toto je kus javascriptového kódu. Jedná se o normální chování. Prostě java, načítá se... Trvá to. Nějak moc lidí teď má problém chrome/myš. A opět mám problém s načítáním webů CNInvestu. Zase čekám min. 1 minutu a občas mi prohlížeč nahlásí, že se nemohl spojit se vzdáleným serverem. Zřejmě se hned zkraje startují aplikace, které vyžadují přístup na internet a vypadnou až po timeoutu. Může to být cokoli od spyware od různých updatů. Poradím ti jednu věc, jdi ve Firefoxu na Nástroje-Správce doplňků-Zásuvné moduly a povšimni si, že modul pro Java (Java plug-in) je zabanovaný (červený trojúhelník). Mozilla se po bezpečnostních problémech s Javou rozhodla ve Firefoxu modul pro Java zakázat. Bohužel jsou na blacklistu jak moduly Java 6, tak 7. Tudíž změnit verzi Java v počítači ti nepomůže, jedinou možností je instalace Java verze 8 (Beta) jejíž plug-in Firefox neblokuje.Další možností je použití OpenJDK, ale u toho si poměrně hodně uživatelů stěžuje, že bankovnictví KB v něm nefunguje správně, ačkoli Oracle tvrdí, že OpenJDK 7 je založeno na Java 7 a rozdíly mají být minimální. Jak stránka vypadá, je jedno. Ta stránka má nějaký zdrojový kód, tak ho prostuduj. Nebo požádej někoho, kdo aspoň ví, o čem je řeč. před pár dny měli nějaké problémy globálně, třeba se to zas po**...PS: pokud fakt ještě používáš IE (dle ikony u příspěvku) tak si to co nejrychleji odvykni a nainstaluj si nějaký normální prohlížeč (Firefox, Chrome ap.) Ano, je to HTML5 video. Zatímco flashové video šlo zablokovat snadno, u tohoto typu to jednouché není. Existují sice rozšíření jako např. [https://chrome.google.com/webstore/detail/disable-h...](https://chrome.google.com/webstore/detail/disable-html5-autoplay/efdhoaajjjgckpbkoglidkeendpkolai) Ale ty zablokují pouze samotné přehrávání - nikoli načítání do cache...Jediná účinná metoda je zablokovat scripty, daní za to je ale ne úplně korektní zobrazení všech prvků na stránkách.Já osobně jsem si za tímto účelem upravil prohlížeč (chromium) tak, že neumí přehrávat žádné video - a mám pokoj.