Blog Home  Home Feed your aggregator (RSS 2.0)  
Venexus DotNetNuke Blog - Saturday, December 03, 2005
DotNetNuke Articles, Code Snippets, Errors, and News
 
 Friday, December 02, 2005

Lee Sykes of DNN Creative approached me about doing an interview on search engine optimization and DotNetNuke. I jumped at the opportunity and am happy to announce the Issue 4 release of DNN Creative that includes the DNN and SEO interview. I will admit that I do not know everything about search engine optimization nor DotNetNuke, and have not been in the SEO game long. Nor do I have the stomach to live on the whim of Google or any other search engine algorithm change, but there are a LOT of basic things you can do to make your DNN site rank better in the search engines. I have seen many DNN sites that might look good to the user as far as look and feel are concerned, but the code looks long and poorly optimized in the source. This is disappointing because without the search engines really picking up on the DotNetNuke movement, as well as the search engine users finding sites built with DNN, the opponents of the darkside (damn hippy PHP coders) will continue their run at being the choice for data rich SE friendly sites. What I do know about SEO is from running many DNN sites and trying things to see how the search engines treat them. Also, having wrote several crawlers/spiders, I do know how the bots that retrieve and index webpages work. So, check out the interview in Issue 4 of DNN Creative and search engine optimize your DNN website.

Friday, December 02, 2005 11:43:57 AM (US Eastern Standard Time, UTC-05:00)  #       | 

As posted on Xfernal.com, here is the code for DotNetNuke Skin HTML Table Trick. This will help for search engine optimization by making the "Left Menu" aka LeftPane appear to the user as expected, but appear in the HTML code below the ContentPane. This will help getting the main content of the webpage above the navigation, making the content more important than the menu when indexed.

Here is the code: 

<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
   <TBODY>
      <TR>
         <!-- skip to second column -->
         <TD vAlign=top align=middle width=180></TD>
         <TD class=ContentPane id=ContentPane vAlign=top width="100%" rowSpan=2 visible="false" runat="server"></TD>
      </TR>
      <TR>
         <TD class=LeftPane id=LeftPane vAlign=top align=middle width=180 visible="false" runat="server"></TD>
      </TR>
   </TBODY>
</TABLE>
Friday, December 02, 2005 11:07:47 AM (US Eastern Standard Time, UTC-05:00)  #       | 

A DotNetNuke site I have been working on that has some decent traffic, was experiencing an occasional Out of Memory Error. During peak traffic times, IIS would crap out and throw the error. IISReset was neccessary sometimes to alleviate the issue...very frustrating.

Here is the error:

InnerException: Exception of type System.OutOfMemoryException was thrown.
Message: DotNetNuke.Services.Exceptions.PageLoadException: Exception of type System.OutOfMemoryException was thrown. ---> System.OutOfMemoryException: Exception of type System.OutOfMemoryException was thrown. --- End of inner exception stack trace ---

Environment:

  • DotNetNuke 3.1
  • Windows 2003 Server
  • All of the latest patches/service packs
  • MS SQL Server 2000
  • 1.6 Gb Database size
  • Dual 3 Ghz Xeons with 2 Gb RAM Dell 2850

After digging into logs and looking around Host > Schedule,  I noticed that the errors coincided with the DNN Search Indexer schedule, so I stopped it. This helped for a bit, but as the site continued to grow (over 500,000 pages), the error began reappearing. 

I had tried a few other things to get rid of the issue without success. For example, under Host > Schedule I enabled DotNetNuke.Services.Cache.PurgeCache, DOTNETNUKE and was purging every 30 minutes. I thought surely this would be the answer, kicking myself for not enabling it earlier. However, to my disappointment, the error persisted. ARRRRRRRR!

I feel strongly that SQL Server should be on it's own server, but due to a server shuffle in our rack and decommisioning an older server to make room for 3 other servers, we have been using a single server for both IIS and SQL Server for this site. We are working through a few Remote Procedure Call errors with DNN 3.x and 4.0 and SQL Server 2005 (will discuss in later post) and were forced to use this setup. This error would surely go away when we move our production database to our Quad Itanium Processor server with 12 Gb RAM, but unfortunately this was not an option. So, I started digging through MSDN and found the Server Memory Options.

"Use max server memory to prevent SQL Server from using more than the specified amount of memory, thus leaving remaining memory available to start other applications quickly. SQL Server does not immediately allocate the memory specified in max server memory on startup. Memory usage is increased as needed by SQL Server until reaching the value specified in max server memory. SQL Server cannot exceed this memory usage unless the value of max server memory is raised." - MSDN

So, I decided to give it a try...This is what I did:

  1. Opened Enterprise Manager
  2. Expanded the server group
  3. Right-clicked the server
  4. Clicked Properties
  5. Clicked the Memory tab
  6. Under Dynamically configure SQL Server memory, lower the Maximum

This seems to have worked. MS SQL Server is such a pig. By putting it on a diet and setting max server memory, the error has disappeared. I decided to do some testing and was beating up the server pretty bad with several crawlers/spiders I have built and was hitting the site hard. The only error I experienced during my testing was an occasional deadlock victim error, which is expected with the number of transactions taking place on this database. I will live with a temporary error over an IIS crash anyday. Moving everything back to seperate servers for IIS and SQL Server should help greatly for a DNN site of this size. Let's just hope the DNN team can knock out a few crtitical issues with RPC and SQL Direct provider.

Friday, December 02, 2005 2:32:13 AM (US Eastern Standard Time, UTC-05:00)  #       |   | 
 Thursday, December 01, 2005

Out of the box, DNN does a couple of very bad things as far as search engine optimization is concerned. While I was learning how DNN worked, I had Google index one of our sites and it indexed every page on the site AND the unique URL page for Login, Register, Privacy Policy and Terms of Use, making my site index 5 times larger than it really was. Very bad! This redundant content could hurt search engine rankings...

The first concern is the links to Login and Register. By default, with search engine friendly URLs turned on, a unigue URL is created on EVERY page for the Login and Register. This can be quickly fixed...

The fix:

  1. Create a new page called Login
  2. Add the Account Login module to the page
  3. Create another page called Profile (you can call it whatever you want)
  4. Add the User Account module to the page
  5. Go to Admin > Site Settings
  6. Expand Advanced Settings
  7. Under Page Management select the page you first created for the Login Page
  8. For the User Page, select the Profile page you created
  9. Click the Update link at the bottom of the Site Settings page

Now, DNN will use the "hardcoded" links for all Login/Register links on the site.

The second badness DNN does is with it's default DotNetNuke skins. Within the skin is the DNN Tag/Token for Privacy Policy and Terms of Use. Once again, this is a unique URL for EVERY single page on the website for both pages. This one is a little more difficult and requires that you edit the skin. So, open up your favorite editor and modify the skin by removing the tags/tokens for "PRIVACY" and "TERMS" to use a real hardcoded links. While most skin developers include these tags/tokens in their skins, until the DNN core team fixes this issue, I would recommend removing them.

Update 1/5/2005:

I submitted an issue to the DNN Bug Tracker on 1/1/2005: DNNP-2289

No response yet...

Thursday, December 01, 2005 4:17:37 PM (US Eastern Standard Time, UTC-05:00)  #       |   | 

I decided to create a blog just for keeping up with everything going on in the DotNetNuke world. Anything I find helpful or newsworthy concerning DNN will be posted here. Many of thepost will undoubtedly be technical and mainly for developers, but users of DNN will find information they can use to make their DNN site better. So, for my first post, I will list a few of the main websites for DotNetNuke and keep this short...

DotNetNuke Links:

More coming soon!

 

Thursday, December 01, 2005 3:32:29 PM (US Eastern Standard Time, UTC-05:00)  #       | 
Copyright © 2010 Venexus, Inc.. All rights reserved.