Click here to Skip to main content
Licence 
First Posted 3 Oct 2002
Views 239,276
Bookmarked 96 times

Fast ASP.NET Hit Counter with Full Digit Graphic File Support

By | 4 Oct 2002 | Article
Fully customizable and fast site hit counter with multiple counters supported and done without using cookies or any extra files or settings!

Sample Image - FastCustomHitCounter.jpg

My Task

Basically I set out to create a nice graphically customizable counter using VB.NET and ASP.NET. After searching the web for a bit I realized that there wasn't really any good ASP.NET hit counter programs out there so I just had to make my own! :)

  1. I needed it to be capable of using any standard digits graphic that I wanted.
  2. It had to be able to count differently on multiple pages.
  3. It had to be FAST! No excess overhead by database calls or complex structures.
  4. It had to use session and application variables to keep track of hits - no cookies. I Needed an app that would only count each unique session and not every page refresh or not work on machines without cookies
  5. Most importantly, it had to be completely self encapsulated without me having to make any other supporting code from any part of the rest of my web site.

How It Works

You will find that the source is very well documented so there is really no need to go into it here. Specially for those who just wish to use the code. :)

Here is a generic flow of how it works in principal:

  • Get the current counter value from an application variable named, in part,from the ID. Since this is in an application variable, if someone else came to your site after say you did it would count just perfectly. ie - User 1 starts a new session at the site - counter goes fom 100 to 101, then User 2 starts a session with the site and counter goes to 102, then the first user refreshes his page and his counter changes to 102 also. Very cool.
  • Check if a temp session variable exists that is also based on the ID. If it doesn't then get the current count from text file (in case someone has changed it manually). Then increment the counter and save it to the application variable and the text file. Lastly setting the temp session variable so that the counter will not have to access the text file or increment the counter for the rest of the current user's session (most servers set the session timeout to 15 mins so the user will either have to close out his browsers and make a new session or not do anything on the site for 15 minutes before the system will count him again). This check here also only reads or writes to the text file when the counter is incrementing! Therefor any kind of delays in generating the counter due to only one person being able to write to the text file at a time are GREATLY limited - making the counter ultra fast even if you have 1000's of viewers in your site at the same time
  • Using the awesome graphic capabilities of .NET, the program then loads up the digit graphic (BTW - any graphic format that .NET natively supports will work -Gif,Jpg,etc.) and procedes to pull out the digits one at a time and build the new counter graphic. After it's built it simply returns the image to the caller.
Sort, simple, and extremely effective like all good program components should be! :)


How to Use It

The source code works on the principle of adding code like this to your page:

&ltimg src="counter/counter.aspx?src=digits.gif&digits=5&id=countername"&gt

counter/counter.aspx is the location and name of the program. (I highly recommend putting the counter program in it's own directory in your site so that it keeps your site clean :) )

src is set to whatever image file contains your counter's digits. The image location is relative to the location of the counter.aspx so I recommend just puting all of your different digit graphics in the same directory as the counter. The image must be in the standard 10 digit format (0 through 9) and all the digits must be of the same width as the program automatically gets the width of the digits by dividing the image width by 10. And the height of the digits is set by the height of the image. This is standard by all normal downloadable digit pics. There are many sites that you can get free digit images from (ie Click here for a big sampling)

digits is just simply set to the number of digits you want your counter to show.

id is a unique id to identify your counter. You just set this to anything to name your counter although you will have keep it to normal text cause your counter's text file will be named after it (not to mention the internal session and application variables that it uses). This feature lets you have many different counters in your site cause you can just name them differently.

As you will see when you start using it - it simply keeps the current count backed up in a text file named after the counter name. This allows you to set an initial value or modify the value to whatever you want.

That's all there is to it - ENJOY ALL! :)

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

About the Author

JediBaron

Web Developer

United States United States

Member



Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board. (secure sign-in)
 
Search this forum  
 FAQ
    Noise  Layout  Per page   
  Refresh
GeneralMy vote of 5 Pinmemberkarensuhm16:01 15 Oct '11  
GeneralMy vote of 5 Pinmemberbrother.gabriel8:38 30 Dec '10  
GeneralNot working in master page PinmemberNoBullMan6:15 15 Apr '10  
GeneralWorking but have one issue Pinmemberdfrimmel23:13 24 Feb '10  
QuestionWorking - but not working Pinmemberxiecsuk8:00 11 Apr '09  
GeneralRegarding the non working hit counter Pinmemberkinacav3:04 1 Oct '08  
GeneralImage Not Showing outside of running in the IDE Pinmembercwodrsret2:36 11 Apr '07  
GeneralRe: Image Not Showing outside of running in the IDE Pinmembertolsen6411:22 21 Jun '08  
GeneralRe: Image Not Showing outside of running in the IDE PinmemberGamil23:57 11 May '09  
GeneralCan't show the image to the remote server.... Pinmembertsimikkonen11:05 31 Mar '07  
Generali'cant display image Pinmemberwinazerty22:09 9 Mar '07  
QuestionHELP! Can't get it to work in Dreamweaver MX PinmemberLeyse8:40 21 Sep '06  
GeneralShame it is ASP.NET Pinmemberacidedge9:09 29 May '06  
GeneralPLEASE HELP - FILE LOCATION ERROR !!!! Pinmembertowelhead20:40 12 Jan '06  
I cant figure out why it cant see this file, which is located in the same directory as counter.aspx
 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
 
Exception Details: System.IO.FileNotFoundException: F:\root\www\sitename
 
Source Error:
Line 52: dim i as System.Drawing.Image = System.Drawing.Image.FromFile(server.mappath(request("pdy.gif")))

 
Chris
Generalintermittant success Pinmemberlarrys325510:51 2 Sep '04  
GeneralFile corruption Pinsussdrober7:43 5 Aug '04  
QuestionTrying to implement on external server? PinmemberLinq10:30 28 Jul '04  
AnswerRe: Trying to implement on external server? PinmemberLinq3:16 29 Jul '04  
GeneralRe: Trying to implement on external server? PinmemberLinq3:32 29 Jul '04  
GeneralHaving Problem Not working for me PinmemberASPCAT7:59 3 Jul '04  
GeneralDoes Apache support ASPX PinmemberBDavis0965:31 25 May '04  
GeneralRe: Does Apache support ASPX PinmemberJason3338:48 11 Oct '04  
GeneralRe: Does Apache support ASPX Pinmembermondog2k56:09 27 Dec '05  
GeneralIt is working 100% Pinmemberfweinrebe22:47 20 May '04  
GeneralNot Working for me Pinmemberbeland6611:13 7 May '04  

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Mobile
Web03 | 2.5.120529.1 | Last Updated 5 Oct 2002
Article Copyright 2002 by JediBaron
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid