How much is Application Data

B

Bruce

In a site that has about 4000 products, in 1000 categories, I thought that I
can store each product and category details in its own application("var"),
instead of trips to the database.

When someone will go to product.asp?id=123, the page will show the
application("product123") instead of getting the information from the
database.

If a change of pricing or availability occours, I will delete the
application("product123"). The product.asp will check if it's empty. If it
is, it will get the data from the database and show that, but the next time
someone goes to that page, there is no need to connect to the database.

I've used it many times for chunks of HTML (see
http://www.learnasp.com/freebook/asp/speedappdata.aspx), but my question is,
how much can I save in application data? Can I put 4000 of them?
 
B

Bob Barrows [MVP]

Bruce said:
In a site that has about 4000 products, in 1000 categories, I thought
that I can store each product and category details in its own
application("var"), instead of trips to the database.

When someone will go to product.asp?id=123, the page will show the
application("product123") instead of getting the information from the
database.

If a change of pricing or availability occours, I will delete the
application("product123"). The product.asp will check if it's empty.
If it is, it will get the data from the database and show that, but
the next time someone goes to that page, there is no need to connect
to the database.
I've used it many times for chunks of HTML (see
http://www.learnasp.com/freebook/asp/speedappdata.aspx), but my
question is, how much can I save in application data? Can I put 4000
of them?

It depends on the server hardware (amount of RAM) and the number of
applications running on the server. This is the type of question that can
only be answered by testing. For example, we have on idea how much memory is
consumed by storing one of these productls, let alone 4000. If scalability
is a concern, you should be striving to avoid page faults.

The other concern is concurrency: I assume you have already realized the
need to lock the application object while making changes to its contents.
While the application is locked, no requests in the application can be
served. Whether this is a concern or not depends on the frequency of price
changes and can only be answered by testing.

Is the call to the database so time-consuming that caching the data in
application is necessary?
 
A

Anthony Jones

Bob Barrows said:
It depends on the server hardware (amount of RAM) and the number of
applications running on the server. This is the type of question that can
only be answered by testing. For example, we have on idea how much memory is
consumed by storing one of these productls, let alone 4000. If scalability
is a concern, you should be striving to avoid page faults.

The other concern is concurrency: I assume you have already realized the
need to lock the application object while making changes to its contents.
While the application is locked, no requests in the application can be
served. Whether this is a concern or not depends on the frequency of price
changes and can only be answered by testing.

Or just don't bother locking the application object. That'll be fine in
this case.
 
B

Bruce

Thanks for the response.

The site is hosted on a shared hosting (discount asp .net), where I don't
hav control over testing and looking at the RAM etc. If every product is 3
KB of information, is that 4000*3 ?

How would I test if caching is faster than connecting to a database? (I want
to test speed of page load, and scalability).

I've stumbled upon http://www.webgecko.com/products/aspcache/, is anyone
familiar with that? The page claims that it's much faster than storing in
application data, but I can't use it on a shared hosting :( Is there
something else similar?
 
A

Anthony Jones

Bruce said:
Thanks for the response.

The site is hosted on a shared hosting (discount asp .net), where I don't
hav control over testing and looking at the RAM etc. If every product is 3
KB of information, is that 4000*3 ?

How would I test if caching is faster than connecting to a database? (I want
to test speed of page load, and scalability).

I've stumbled upon http://www.webgecko.com/products/aspcache/, is anyone
familiar with that? The page claims that it's much faster than storing in
application data, but I can't use it on a shared hosting :( Is there
something else similar?


Yeah use ASP.NET and do things like Response caching.

12MB of product data is peanuts.

If your concerned about performance then its more important to consider what
the hit rate will be and how much CPU your ASP code is going to consume.
 
M

Mike Brind

Another option is to use the FileSystem.Scripting object to generate a
static html version of each page, and show that. On each request. code can
check for the presence of an html file, and if it exists, show it (include
file, perhaps?), otherwise generate it from the database and show it. If
you amend the details of any product, code will delete the associated html
file.
 
M

Mike Brind

Maybe not include files. You can't set their value dynamically. But
Server.Transfer would work.
 
M

Mike Brind

Me and my spineroosms. Of course that should have been
Scripting.FileSystemObject.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,768
Messages
2,569,574
Members
45,050
Latest member
AngelS122

Latest Threads

Top