@Sebastian
Thanks again for your attention.
*Also, could you find out something about the breakpoints issue? Did it go
away on the Firebug-only profile?*
Inserting a breakpoint (via "debugger") in one of the init scripts, the
following occurred:
1) breakpoint triggered
2) "continue" operated as expected;
3) on continued triggers: "disable" operated as expected;
However:
- removal of the debugger command *did not* remove the breakpoint in FB on
reload of the script (browser refresh with caching disabled)
- that is, the red dot in the scripts persisted on the line where the
debugger had been previously present and the breakpoint continued to be
triggered
- required restart of the browser to remove the breakpoint - both red dot
and the breakpoint itself
That is puzzling
*Is it possible that you break this down to a simple test case, we can
reproduce the slowdown?*
Well, in general, while the structure of the app is rather complex, the
pattern is fairly repeatable:
1) initial page load is typical HTML5 where the assets are delivered
(including all scripts, CSS and images) and the HTML (empty) targets are
initialized - where the targets are id-based elements that received
injected HTML. This is a layout view rendered through the Yii framework.
2) using jQ .ready(), we trigger an initial POST to retrieve "page info"
and HTML, where the HTML is subsumed within a JSON object;
3) using a deferred structure, on completion of the initial POST, if there
are widgets (sometimes kendo or other UI structures) on the page, we
trigger a POST to get data and HTML specific to the specific "sub-page" and
other fragments
4) on completion of this POST, again under a deferred promise sequence, we
initialize the widgets and release the UI.
We know this process completes as designed for a number of reasons - - that
is, we use a clear mask (with a very high z-index) to disable UI
interaction while the promise sequence executes; this is released after the
final promise is resolved. In addition, in development we frame each
promise with a console.time([*name*]) - console.timeEnd([*name*]) pair to
verify the execution is sequenced correctly.
Thus, in summary:
Initial page load
execute init under deferred promise - - on resolve()
Ajax POST
execute stuff (appx 700 mS)
POST (chained to previous ajax POST using .done()
execute stuff (appx 700 mS) under deferred promise
on resolve()
Release UI
I suppose we could give access to a demo but this is very sensitive client
site and we could not give access through a forum.
One thought occurs to me: we use a console control function initialized in
an init script but outside of the jQ .ready(). I have used this for years
and have never had an issue. This code block is shown below:
var consoleHolder = console;
function doConsoleLog(doConsole){
if (!doConsole) {
consoleHolder = console;
console = {};
console.log = function(){};
console.time = function(){};
console.timeEnd = function(){};
console.dir = function(){};
console.clear = function(){};
}
else {
console = consoleHolder;
}
}
//set argument FALSE to disable console
doConsoleLog(false);
The consoleHolder variable is the only global we use - all other variables
are scoped within functions. I tried eliminating this function but no
effect that I could see - I also tried dialing all the panels except for
HTML - again no effect.
Hope this is not too much detail
S
On Thursday, July 17, 2014 5:22:06 AM UTC-4, Sebastian Zartner wrote:
>
> Thanks again for the detailed description.
> Is it possible that you break this down to a simple test case, we can
> reproduce the slowdown?
>
> Also, could you find out something about the breakpoints issue? Did it go
> away on the Firebug-only profile?
>
> Sebastian
>
> On Tuesday, July 15, 2014 12:24:58 PM UTC+2, stephen taylor wrote:
>>
>>
>> <https://lh5.googleusercontent.com/-v9V_MJJZ13w/U8UBI61MB-I/AAAAAAAAAKg/dU9Ntuyf_zM/s1600/2+-+HMTL+Panel+after+appx+1+Minute.jpg>
>>
>>
>> <https://lh4.googleusercontent.com/-G3sNvj989Qo/U8UBWdaBwAI/AAAAAAAAAKo/BoOfRF3zj38/s1600/3+-+HMTL+Panel+*NORMAL*+operation.jpg>
>>
>>
>> <https://lh5.googleusercontent.com/-pzr8FkSspIg/U8UBGdCOCxI/AAAAAAAAAKY/qcGsOkTUkiA/s1600/1+-+HTML+Panel+after+full+page+load.jpg>
>>
>> Thanks for the attention - huge fan of FB and we rely heavily on it.
>>
>> As it turns out, firePHP does not seem to contribute to the latency. I
>> have multiple profiles with various configurations - including one with
>> firebug only and one with one with FB and Web Developer tools extension.
>> After an initial evaluation where the problem *seemed* to go away, it
>> (oddly) returned.
>>
>> I can provide more detail but it is true that these scripts (in a Single
>> Page App) contain various POST and GET requests, a complex DOM where
>> multiple UI widgets being instantiated or destroyed and manipulated (with
>> JQ) as needed. Until FB 2.01, this was not a problem.
>>
>> Here's the thing: the long latency in updating the HTML panel (and the
>> console) is mainly present on a full page refresh (that is, not an
>> ajax-based navigation interaction). The latency can be up to 1 min. If,
>> during this period, interactions with page elements take place, when the
>> HTML panel (and console) catch up, it looks like all the previous
>> interactions are reflected in the HTML Panel (and withdrawn) - - it looks
>> like these are cached waiting for some process to complete?
>>
>> Here is a description of a typical scenario:
>>
>> 1) refresh from browser
>> 2) page loads - initial view is reflected in the HTML panel but none of
>> the JS-based UI manipulations are revealed in FB - though they are present
>> in the Browser
>> example: main page elements are loaded but a view of a particular block
>> within the current page is fetched (via GET) and injected into the DOM.
>> Right-click selection of these injected elements (via "view element") (for
>> example) shifts focus to the FB HTML panel but the injected elements are
>> not yet shown in that Panel - yet is visible to the user and the events
>> that are attached to that view are active. Note also that console.log notes
>> that occur in the course of executing this view are not present.
>> 3) after the "wait" time, the DOM panel lights up, showing the injected
>> elements with all the JS-driven events and the console reads out all the
>> logs and timers we have set.
>>
>> After the initial wait time, all seems to operate as normal.
>>
>> As a specific instance, on one "page" we have a number of kendo widgets -
>> in this case dropdowns. The drop down elements are functionally active
>> during the wait time (as are the events attached to them) but (as kendo
>> users know), the drop down containers themselves are stored at the bottom
>> of the body.
>>
>> In *normal operation*, these are shown in the HTML Panel immediately upon
>> binding. In the "wait state", they appear up to 1 minute later. If, during
>> that "wait state", another "page" is selected, the JS destroys the kendo
>> widgets - while they vanish from the Browser, in the wait state, nothing
>> happens in the HTML panel. That is, if you select a new "page" (and thus
>> destroy these widgets) during the wait time, when the Panel does "catch"
>> up, the first set of widgets (now destroyed and removed) are shown briefly
>> but then deleted - and if the selected new "page" also has widgets, these
>> replace the destroyed ones. The console reads out all the logs up to that
>> point.
>>
>> I am trying to be specific as possible - - here are 3 screen shots:
>>
>> 1) on initial page load
>> 2) after 1 minute - this happens at the end of page load
>> 3) normal operation
>>
>> thanks for the mind share on this
>>
>> S
>> On Sunday, July 13, 2014 6:28:30 AM UTC-4, stephen taylor wrote:
>>>
>>>
>>> Since FF 30 and FB v2.01, this invaluable tool had become (for us)
>>> practically unusable due to:
>>>
>>> 1) extremely slow update of the DOM view - sometimes several minutes
>>> after injecting or removing elements.
>>> 2) console readouts just as slow - so that (for example) runtime JS
>>> errors are not evident for quite a long time
>>> 3) breakpoints do not seem to removable except by restarting FF.
>>>
>>> Regarding points 1) and 2)
>>>
>>> This is not always repeatable - that is, it seems the "wait" time
>>> (latency of the responsiveness) is variable - and sometimes is not
>>> perceptible at all.
>>>
>>> We use FB throughout our dev group and have only a few plugins enabled -
>>> mainly things like Web Developer.
>>>
>>> We have tried turning off the scripts and net tabs (and obviously
>>> foregoing breakpoints) but no love.
>>>
>>> Note that the current app under development is a single app that relies
>>> heavily on jQuery with multiple ajax calls fired by various events,
>>> including various navigation and user options.
>>>
>>> I am not sure what is most helpful here but here is an example:
>>>
>>> 1) Load page - can take up to 1 minute to update FB DOM view and console
>>> readout
>>> 2) select a "page" thru primary navigation
>>> - this triggers a ajax call that results in injection of HTML into the
>>> "re-writeable" section of the DOM
>>> - FF renders as expected but the FB DOM panel does not update for up
>>> to a minute
>>> - all console messages delayed until that time
>>>
>>> Has anyone seen this? suggestions?
>>>
>>> S
>>>
>>
--
You received this message because you are subscribed to the Google Groups
"Firebug" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/firebug.
To view this discussion on the web visit
https://groups.google.com/d/msgid/firebug/678e7daf-988d-46bf-acd8-a888b1b546f7%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.