[OpenLayers-Users] [SOLVED] Re: WMSGetFeatureInfo - slow response in IE8 and 9

teknocreator teknocreator at gmail.com
Mon Mar 12 19:11:00 EDT 2012


[SOLVED] Chart one up to user configuration error here  It really helps if
one doesn't copy the actual page <!DOCTYPE ... statement into MapServer's
header template file.  For returns of text/html format type, the mapfile for
MapServer needs an html header, body, and footer file.  These can be fairly
complex.  However, all I wanted was basically:

&lt;html>  (header)
<body> (body)
   value = [value_0]
</body>
</html> (footer)

These must have a MapServer template line at the beginning that's looks like
a comment but MapServer uses it to identify an html template file.

Unfortunately, in the header, I had for some STRANGE reason copied the
<!DOCTYPE line.  I think because perhaps MapServer at first indicated it
didn't look like a MapServer template file when I didn't have the &lt;!--
MapServer Template --> line at the beginning.  So, I must've thought the
<!DOCTYPE... was was needed.  I found out later that each part needs the
&lt;!-- MapServer Template --> line and didn't take out the <!DOCTYPE line. 
The requirement of &lt;!-- MapServer Template --> wasn't directly pointed
out as being required and I found that piece of info elsewhere.  But, since
I didn't take out the <!DOCTYPE line, it gave IE grief.  Interesting that it
worked in Firefox and Chrome.

Now when I do the query in IE8, takes 3-4 seconds like it does in FF or
Chrome.  So sorry bothering the list but at least folks know what not to do.
&lt;quote author=&quot;teknocreator&quot;>
Andreas,

I'm sorry, but I don't really understand how to carry out what you're
describing.  I originally just specified &lt;!DOCTYPE html&gt; for the page
and the same thing occurs.  I searched the mapserver code for GetFeatureInfo
and DOCTYPE and I couldn't easily see in the code where this might pertain
to getfeatureinfo, as in doesn't appear to be referring to a dtd when
carrying out the request.  The only references to DOCTYPE are in formatting
error exceptions when the WMS request string isn't formatted properly.

I tried a suggestion from W3 about specifying a local area for the dtd. 
Unfortunately, I'm unable to install Fiddler on this one machine I'm working
and will have to check later. 

However, I also decided to debug within IE8 and there's a lengthy delay in
the OpenLayers code, XMLHttpRequest.js.  It seems to loop at least 4 times
in 

        this._object.onreadystatechange    = function() {


 and on the 4th 

the routine goes through:


            if (oRequest.readyState == cXMLHttpRequest.DONE) {
                // Free up queue
                delete oRequest._data;

                fCleanTransport(oRequest);

               // BUGFIX: IE - memory leak in interrupted
                if (bIE && bAsync)
                    window.detachEvent("onunload", fOnUnload);

            // BUGFIX: Some browsers (Internet Explorer, Gecko) fire OPEN
readystate twice
            if (nState != oRequest.readyState)
                fReadyStateChange(oRequest);

When it hits fReadyStateChange(oRequest), this is where a delay occurs
before continuing onto the next statement.

After that delay, it moves onto:

            nState    = oRequest.readyState;
        }

And returns the value from MapServer.

In Firefox and with Firebug,

         this._object.onreadystatechange    = function() { 

is not even entered.

I'll still look at this from the MapServer point of view and perhaps check
about bypassing the dtd somehow.  But, there looks to be a possible issue
with how this is being handled within OL.

Dave M


Andreas,

I'm sorry, but I don't really understand how to carry out what you're
describing.  I originally just specified &lt;!DOCTYPE html&gt; for the page
and the same thing occurs.  I searched the mapserver code for GetFeatureInfo
and DOCTYPE and I couldn't easily see in the code where this might pertain
to getfeatureinfo, as in doesn't appear to be referring to a dtd when
carrying out the request.  The only references to DOCTYPE are in formatting
error exceptions when the WMS request string isn't formatted properly.

I tried a suggestion from W3 about specifying a local area for the dtd. 
Unfortunately, I'm unable to install Fiddler on this one machine I'm working
and will have to check later. 

However, I also decided to debug within IE8 and there's a lengthy delay in
the OpenLayers code, XMLHttpRequest.js.  It seems to loop at least 4 times
in 

        this._object.onreadystatechange    = function() {


 and on the 4th 

the routine goes through:


            if (oRequest.readyState == cXMLHttpRequest.DONE) {
                // Free up queue
                delete oRequest._data;

                fCleanTransport(oRequest);

               // BUGFIX: IE - memory leak in interrupted
                if (bIE && bAsync)
                    window.detachEvent("onunload", fOnUnload);

            // BUGFIX: Some browsers (Internet Explorer, Gecko) fire OPEN
readystate twice
            if (nState != oRequest.readyState)
                fReadyStateChange(oRequest);

When it hits fReadyStateChange(oRequest), this is where a delay occurs
before continuing onto the next statement.

After that delay, it moves onto:

            nState    = oRequest.readyState;
        }

And returns the value from MapServer.

In Firefox and with Firebug,

         this._object.onreadystatechange    = function() { 

is not even entered.

I'll still look at this from the MapServer point of view and perhaps check
about bypassing the dtd somehow.  But, there looks to be a possible issue
with how this is being handled within OL.

Dave M


Andreas,

I'm sorry, but I don't really understand how to carry out what you're
describing.  I originally just specified &lt;!DOCTYPE html&gt; for the page
and the same thing occurs.  I searched the mapserver code for GetFeatureInfo
and DOCTYPE and I couldn't easily see in the code where this might pertain
to getfeatureinfo, as in doesn't appear to be referring to a dtd when
carrying out the request.  The only references to DOCTYPE are in formatting
error exceptions when the WMS request string isn't formatted properly.

I tried a suggestion from W3 about specifying a local area for the dtd. 
Unfortunately, I'm unable to install Fiddler on this one machine I'm working
and will have to check later. 

However, I also decided to debug within IE8 and there's a lengthy delay in
the OpenLayers code, XMLHttpRequest.js.  It seems to loop at least 4 times
in 

        this._object.onreadystatechange    = function() {


 and on the 4th 

the routine goes through:


            if (oRequest.readyState == cXMLHttpRequest.DONE) {
                // Free up queue
                delete oRequest._data;

                fCleanTransport(oRequest);

               // BUGFIX: IE - memory leak in interrupted
                if (bIE && bAsync)
                    window.detachEvent("onunload", fOnUnload);

            // BUGFIX: Some browsers (Internet Explorer, Gecko) fire OPEN
readystate twice
            if (nState != oRequest.readyState)
                fReadyStateChange(oRequest);

When it hits fReadyStateChange(oRequest), this is where a delay occurs
before continuing onto the next statement.

After that delay, it moves onto:

            nState    = oRequest.readyState;
        }

And returns the value from MapServer.

In Firefox and with Firebug,

         this._object.onreadystatechange    = function() { 

is not even entered.

I'll still look at this from the MapServer point of view and perhaps check
about bypassing the dtd somehow.  But, there looks to be a possible issue
with how this is being handled within OL.

Dave M


Andreas,

I'm sorry, but I don't really understand how to carry out what you're
describing.  I originally just specified &lt;!DOCTYPE html&gt; for the page
and the same thing occurs.  I searched the mapserver code for GetFeatureInfo
and DOCTYPE and I couldn't easily see in the code where this might pertain
to getfeatureinfo, as in doesn't appear to be referring to a dtd when
carrying out the request.  The only references to DOCTYPE are in formatting
error exceptions when the WMS request string isn't formatted properly.

I tried a suggestion from W3 about specifying a local area for the dtd. 
Unfortunately, I'm unable to install Fiddler on this one machine I'm working
and will have to check later. 

However, I also decided to debug within IE8 and there's a lengthy delay in
the OpenLayers code, XMLHttpRequest.js.  It seems to loop at least 4 times
in 

        this._object.onreadystatechange    = function() {


 and on the 4th 

the routine goes through:


            if (oRequest.readyState == cXMLHttpRequest.DONE) {
                // Free up queue
                delete oRequest._data;

                fCleanTransport(oRequest);

               // BUGFIX: IE - memory leak in interrupted
                if (bIE && bAsync)
                    window.detachEvent("onunload", fOnUnload);

            // BUGFIX: Some browsers (Internet Explorer, Gecko) fire OPEN
readystate twice
            if (nState != oRequest.readyState)
                fReadyStateChange(oRequest);

When it hits fReadyStateChange(oRequest), this is where a delay occurs
before continuing onto the next statement.

After that delay, it moves onto:

            nState    = oRequest.readyState;
        }

And returns the value from MapServer.

In Firefox and with Firebug,

         this._object.onreadystatechange    = function() { 

is not even entered.

I'll still look at this from the MapServer point of view and perhaps check
about bypassing the dtd somehow.  But, there looks to be a possible issue
with how this is being handled within OL.

Dave M



--
View this message in context: http://osgeo-org.1560.n6.nabble.com/SOLVED-WMSGetFeatureInfo-slow-response-in-IE8-and-9-tp4563627p4572125.html
Sent from the OpenLayers Users mailing list archive at Nabble.com.


More information about the Users mailing list