[ic] timed-build breaks more list - help needed

DB DB at M-and-D.com
Mon Jan 26 08:37:16 EST 2004


I'm running 4.8.8 using a modified foundation and MySQL. I have about 
150,000 items in the catalog. Instead of the stock category list along 
the left side of the page, I have links to custom pages which contain 
searches.

When customers click these links, the search is performed as expected. 
But because the database is getting large, these searches are slowing 
things down. Since the same search is performed each time these links 
are clicked, the timed-build tag should really help reduce the server load.

On one of these custom pages, I put [timed-build auto=1 force=1 
minutes=0] at the top of the page and [/timed-build] at the bottom. As 
expected the page loaded much faster.. almost instantly. The only 
problem is that the more list no longer functions. When I click "Next" 
or any other link from the more list, I just get the first page again. 
There is a big performance incentive for me to fix this so any hints are 
welcomed. I tried moving the [timed-biuld] tage to various places on the 
custom page but unless I wrapped almost the entire page, things broke 
(raw ITL tags were shown on the page). Below is an example of one of 
these custom pages' CONTENT section. If I wrap this whole section with 
[timed-build...], I get the speedup but a broken more list.

------ begin code -----

<H2 align="center">Parts for Commercial turf & Golf course</H2>
<H3 align="center">These are just our featured products.<br>Use our 
[page parts]<B>Parts Finder</B>[/page] to search the complete database.</H3>
<!-- Parts for Commercial turf & Golf course -->
[if scratch did_order]
[include file="templates/components/cart_display"]
[/if]
[set did_order][/set]
[search-region  more=1
                 search="
                 co=yes
                 st=text
                 ml=15
                 tf=category
                 sf=title
                 se=452
                 nu=1
                 op=>=
                 sf=title
                 se=535
                 nu=1
                 op=<=
                    "]

[set munge_quantity]
[calc]
	$Scratch->{did_order} = 1;
	@q = split /\0/, $CGI->{mv_order_quantity};
	for (@q) {
		next unless length $_;
		$_ = "=$_";
	}
	@parms = grep /^mv_oi\d+/ && $CGI->{$_}, keys %{$CGI};

	# If we have parms, means an individual buy. If we don't
	# we want to strip empty items
	unless (@parms) {
		@i = split "\0", $CGI->{mv_order_item};
		for(my $i = 0; $i < @i; $i++) {
			next if length($q[$i]);
			$i[$i] = '';
		}
		@i = grep length($_), @i;
		@q = grep length($_), @q;
		$CGI_array->{mv_order_quantity} = \@q;
		$CGI->{mv_order_quantity} = join "\0", @q;
		$CGI_array->{mv_order_item} = \@i;
		$CGI->{mv_order_item} = join "\0", @i;
		return;
	}
	my $item = $parms[0];
	$item =~ /(\d+)/ or return;
	my $idx = $1;
	$idx--;
	$CGI->{mv_order_item} = $CGI->{$item};
	$CGI->{mv_order_quantity} = "$q[$idx]";
	return;
[/calc]

	[bounce href="[history-scan exclude=nothing]"]
[/set]
[tmp cross_sale][value-extended name=mv_searchspec index=0][/tmp]

[on-match]
<FORM ACTION="[area nothing]" METHOD=POST>
<input type=hidden name=mv_session_id value="[data session id]">
<INPUT TYPE=hidden  NAME="mv_action" VALUE="refresh">
<INPUT TYPE=hidden  NAME="mv_separate_items"  VALUE="0">
<INPUT TYPE=hidden  NAME="mv_click" VALUE="munge_quantity">

Parts for Commercial turf & Golf course

[/on-match]

[more-list]
<BLOCKQUOTE>
Showing [matches] of [match-count] matching items
<BR>
</BLOCKQUOTE>
[/more-list]

<table width="95%" border="0" cellspacing="0" cellpadding="3">
<tr class="contentbar2">
   <td><b>Part#</b></td>
   <td align="center" width="55"><b>&nbsp;</b></td>
   <td align="center" width="40%"><b>Description</b></td>
   <td align="center"><b>Price</b></td>
   <td align="center"><b>Qty</b></td>
   <td align="center"><b>Buy</b></td>
</tr>
<tr>
   <td colspan="6">&nbsp;</td>
</tr>


    [search-list]

[item-change 1][condition][item-field category][/condition]

<tr class="contentbar1">
   <td colspan="6">&nbsp;[either][value banner_text][or][item-field 
category][/either]</td>
</tr>

[/item-change 1]

<tr valign="top">
       <td align="left" valign="middle">
<INPUT TYPE=hidden  NAME="mv_order_item"  VALUE="[item-code]">
<a href="[area [item-code]]">[item-code]</a>
</td>

<td align="center" width="55" valign="middle">
<INPUT TYPE=hidden  NAME="mv_order_item"  VALUE="[item-code]">
[if-item-field thumb]
<a href="[area [item-code]]">
<IMG SRC="thumb/[item-field thumb]" ALT="image" border=0>
</a>
[/if-item-field]

</td>

       <td align="center" valign="middle" width="40%">
<b>[item-field comment]</b><br>[item-field description]</td>
       <td align="center" valign="middle">[item-price]</td>
       <td align="center" valign="middle"><input type=hidden 
name="mv_oi[item-increment]" value=""><input type=text 
name=mv_order_quantity size=2 value="1"></td>
       <td align="center" valign="middle">

	  	[if session browser =~ /mac/]
			<input type=submit value="[L]Buy now[/L]" 
onClick="this.form.mv_oi[item-increment].value='[item-code]'" border=0>
		[else]

			<input type=image src="__THEME_IMG_DIR__buynow.gif" 
onClick="this.form.mv_oi[item-increment].value='[item-code]'" border=0>
[comment]
[order [item-code]]Order Now[/order][/comment]
		[/else]
		[/if]

			</td>
</tr>
<tr>
   <td colspan="6"><hr></td>
</tr>


</p>
</td>
</tr>
<tr><td align="center" colspan="6">
    [/search-list]
    [no-match]
        Sorry, no matches for [value mv_searchspec].
    [/no-match]
[more-list]
<BLOCKQUOTE>
Showing [matches] of [match-count] matching items.<BR>
Click below to see more...
<BR>[more]<BR>
</BLOCKQUOTE>
[/more-list]

    [/search-region]

</FORM>
     <H3 align="center">These are just our featured products.<br>Use our 
[page parts]<B>Parts Finder</B>[/page] to search the complete database.</H3>
     </td>
     </tr>


</td>
</tr>
</table>


------ end   code -----



More information about the interchange-users mailing list