Kbase P116690: WebSpeed performs very slow when HTML form has hundreds of fields
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  9/5/2008 |
|
Status: Verified
SYMPTOM(s):
WebSpeed performs very slow when HTML form has hundreds of fields
FACT(s) (Environment):
It takes 3 to 4 minutes for the form to be processed
Has both get-field and get-value in the application
OpenEdge 10.x
All Supported Operating Systems
CAUSE:
Bug# OE00129372
CAUSE:
The get-field function defined in the /web/method/cgiutils.i is first looking at the form field instead of the QUERYSTRING when it is processing the web request.
FIX:
Upgrade to OE10.1C
or, if upgrade is not possible, use the following workaround
Change the following code in the /web/method/cgiutils.i :
IF CAN-DO(WEB-CONTEXT:GET-CGI-LIST("FORM":U), p_name) THEN
RETURN REPLACE(WEB-CONTEXT:GET-CGI-VALUE("FORM":U, p_name, SelDelim),
"~r~n":U, "~n":U).
ELSE
RETURN REPLACE(WEB-CONTEXT:GET-CGI-VALUE("QUERY":U, p_name, SelDelim),
"~r~n":U, "~n":U).
END.
RETURN v-value.
END FUNCTION. /* get-field */
to
IF CAN-DO(WEB-CONTEXT:GET-CGI-LIST("FORM":U), p_name) THEN
RETURN REPLACE(WEB-CONTEXT:GET-CGI-VALUE("QUERY":U, p_name, SelDelim),
"~r~n":U, "~n":U).
ELSE
RETURN REPLACE(WEB-CONTEXT:GET-CGI-VALUE("FORM":U, p_name, SelDelim),
"~r~n":U, "~n":U).
END.
RETURN v-value.
END FUNCTION. /* get-field */
or just change the CAN-DO to NOT CAN-DO on the IF block on the original statement.
You then need to recompile /web/objects/web-util.p file for changes to take into effect.
With the above changes the get-field will look at the QUERYSTRING for the field (instead of the forms fields). If the field is NOT in the QUERYSTRING, then return the value from the form fields. If it is in the QUERYSTRING, return the value from the QUERYSTRING. The subtle difference is if the field is in the QUERYSTRING as well as the form fields, the user will get the QUERYSTRING value instead.
In addition, the QUERYSTRING has a size restriction, so the list of fields in the QUERYSTRING will always be relatively short. Therefore, it will always be quicker to check the list of fields in the QUERYSTRING than in the form fields.