EPiServer CMS Checklist: Starting Development Checklist
After developing EPiServer for 4 years you realize there are some mistakes that crop up way to often. And most of them is a 30 second job if you do it at the start of the project, but might take literally days if you want to correct it in production (both to debug and fix).
Deployment checklist
Make sure to also run through the EPiServer CMS Deployment Checklist when you are ready to deploy your project.
The Dropit list
This list of course greatly influenced by the excellent Checklist for deploying EPiServer sites on the Dropit blog by Andreas Nylin.
Feedback wanted
This list is by no means the definitive list of what to do when starting a new EPiServer CMS, but more a collection of my own experience, experiences made by my excellent colleagues in Making Waves and of course all the great blog posts out there. And as such I am going to update the list with your feedback so please leave your feedback in the comments.
Episerver.config | |
Set uiMaxVersions = 20 Set uiMaxVersions to 20 in the episerver.config file (in sitesettings). It is important to set this property before the site goes into production as changing it later is difficult. (You would have to republish EVERY page on the site) Reason: The default setting is to keep unlimited number of versions of each page. This is a problem for two reasons: 1. Performance 2. The version list gets very long for editors | |
Force ASP.Net to Render the Same HTML for All Browsers | |
Provide default capabilities for all browsers ASP.Net has a major “bug” that causes it to render different HTML based on User Agent. This creates cache problems as well as hinders HTML validation. To ensure that ASP.Net treats all visitors as having modern browsers add the following in web.config: <system.web> | |
Upgrade to .Net 4.0 | |
Upgrade your site to .Net 4.0 Step 1: Set target framework for your project to .Net 4.0 Step 2: Install the nuget package EPiServerCMS6ToNetFour from nuget.episerver.com.
Step 3: Build Note: Remember to run EPiServer Deployment Center as a .Net 4.0 application when you want to use it on your 4.0 site. | |
CSS & Java Script compression/bundling | |
Add SquishIt SquishIt will bundle and compress your *.js and *.css files and is very easy to use. The easiest way to get SquishIt is to install the SquishIt nuget package from the “NuGet offical package source”. Alternatively you can download it directly. See this great article to learn how to use SquishIt. You will be up and running in minutes. | |
SEO | |
Create an unique TITLE tag for every page automatically An unique title tag MUST be generated for each public page on the site. Use the heading property as default and fall back to the PageName. It should also be possible to override by the editor (use a page property). Reason: The title tag is very important for SEO and is also visible to the end user | |
Create an unique META DESCRIPTION tag for every page automatically An unique meta description tag MUST be generated for each public page on the site. Use the introduction property as default and fall back to the MainBody text. It should also be possible to override by the editor (use a page property). Reason: Although the meta description tag does not affect ranking, it is sometimes shown in the search results and affects click through rate. | |
Only use one H1 tag per page and it used for the main heading No page should have more than one H1 tag. Make sure to use CustomTagName="h1" on the EPiServer:Property control to render the correct HTML. <EPiServer:Property CustomTagName="h1" PropertyName="Heading" ID="Property1" runat="server" /> Reason: H1-H6 should only be used for headings and in the correct order. H1 should be used for the main heading only! | |
Languages | |
Set the right Master Language from the start Go into admin mode and activate just the languages you need. Also ensure that the correct language is set as the Master Language. Reason: Changing master language later might force you to do some nasty direct changes in the database. | |
FilterForVisitors | |
Use the FilterForVisitors filter. Always! Too many times EPiServer sites crashes because the customer deletes a page or a page expires due to stop publish being set. An expired page should not result in a 500 server error! | |
Develop faster | |
Make EPiServer start up faster after each build EPiServer often takes a long time starting after each build, something that can steal a lot of your development time. You can make it faster by following these 3 steps: 1. Delete all the .xml files in the lang folder for languages you don’t need (make a backup first) | |
Update 29.09.2011:
Set stringDelayedLoadThreshold = 50
Due to an issue with setting stringDelayedLoadThreshold to something else than 0 and LinkItemCollections and problems with some custom properties this item has been removed from the list.
And finally: Good luck with your EPiServer project!
Posted by Alexander Haneng
Always inherit your Global.asax file from EPiServer.Global.
I'd like to add handling the robots.txt file to the list? You could always use EPiRobots as available on the EPiServer Nuget feed (shameless plug).
* Upgrade to .NET 4
* add stylecop settings
* setup build environment
* setup XML transformation for configuration files
* setup test and other environments
* setup automatic deployment to all environments
* setup default folder structure (for templates, scripts, images etc)
* add to source control system
* add default libraries (extensions, json.net, PTB etc)
* add CSRF token
* disable BOM for all files
* Add NuGet package that fixes bugs with IE10 and Firefox 5
* Added HTML 5 stuff to web.config (MIME etc)
* configure SMTP
* add testing libraries and projects
* add log handling
* add CSS/JS compression/bundling
* add automatic validation of HTML, CSS, JS, web.config, security + all other tests to build script.
I'm sure I forgot something, but that's it for now :).
Frederik
I tried to set the "stringDelayedLoadThreshold = 50", but it resulting in LinkedItemList properties returning as null when using PageTypeBuilder.
Your whish is our command :) I added better default values for uiMaxVersions and stringDelayedLoadThreshold in vNext. We have on our backlog to improve startup time. Do you use optimizeCompilations attribute as well ? I am considering if we should add it by default or not.
Wow! I must blog more often ;-)
Thanks a million for the better default values for vNext Per! Is going to save us many, many hours.
Haven't used optimizeCompilations, but whatever makes is faster is a great help.
@Per could you tell us some more what updates you're doing to improve startup time?
After upgrading to .NET 4 set ViewStateMode="Disabled" in the main master page to turn off viewstate on the whole site.
David: Robots.txt is in the deploy checklist.
Checklist updated: Added .Net 4.0 and SquishIt.
Checklist updated: Removed stringDelayedLoadThreshold = 50. See note at the end of the checklist.