Sitecore performance optimization - Sitecore configurations, IIS configurations - sitecore

We are planning to deploy our system in the production server. I am interested in learning more about optimizing the performance of the website.
What are the optimizations recommended for Sitecore? (Caching, other settings in web config)
What are the optimizations we can do in IIS?
Could not find a good article on these topics. Appreciate any help :).

Have you looked through all the Sitecore recommended practices and Performance Tuning Guide and applied all these?
Take a look at these tips and tricks to help optimize your Sitecore website and take a look at this going live checklist for Sitecore websites. Also a lot of good information in this John West Blog post.
Have you designed your components to be cacheable in the most efficient way in the first place? Ensure you have your caching set correctly:
Caching via Sitecore’s HTML Cache
Cache Configuration Reference
How to verify HTML cache is working
Have you conducted any load testing simulation on your site? There are a bunch of tools, look at jMeter and LoadUI to simulate traffic. You may also want to review the C# code to make suer there is no bottlenecks.
I have found that 90% of the time a lot of perceived performance issues are down to the frontend rendering. Make sure your markup is light weight as possible, your JS and CSS is minified and code is optimized.
Optimize browser rendering
Writing efficient CSS selectors
Sitecore Front-end Development Best Pracctices
Use the tools available to see where your front-end bottlenecks are:
Yahoo YSlow
Google PageSpeed

Related

Opencart CDN's suggestions

I have been using OpenCart for our site, I am really happy with it, it is an awesome platform that comes with many features and a big community around it. Can someone guide which CDN should is use? What are the important things in the website for which i have to use CDN services. I haven't managed to find any module for this. Any guidance would be appreciated.
Thanks,
Your question doesn't give us full information on what you want to accomplish. Also, there actually are some modules, that make CDN integration.
Also, most CDN services don't require a special plugin, bit can do their magic on the fly, for example like CloudFlare, and their setup is rather basic.
Here is a list of free modules:
https://www.opencart.com/index.php?route=marketplace/extension&filter_license=0&filter_search=cdn
For example, if you would like to have an ImageCDN - KeyCDN has this service and the module utilizes it. Juts an example.
Cloudflare has a good free account service and even better Pro (2nd level) plan, that is good enough for any starter shop. Paid plan has these extras:
Enhanced security with Web Application Firewall (WAF)
Enhanced performance with image and mobile optimization - lossless compression for images and WebP format
HTTP/2 prioritization

Settting up or creating Mobile layouts on an exisiting site with ASPX+Portal Templates

We are currently on Kentico EMS V.7 but when our site(s) was created there was not any mobile device layouts setup. an out entire site is build around ASPX+Portal templates so we don't have the edit layout option on our pages. What would you recommend an origination like ours do in this case? Is there an import or migration tool that can be used to move the pages into a responsive design template (are these available out of the box or do they all need to be built?)
has anyone else come against this challenge with their site when trying to a mobile accessible site, if so what approach did you take to move your site(s) over?
I know Stackoverflow doesn't like to answer broad questions, but I'll save you some trouble and hopefully at least point you in the right direction. I use to be in your shoes and I remember how frustrating it was trying to find resources to learn all of this.
You've got some options, but unfortunately none of them are magic bullets. All of these options involve design and development time. If you haven't already done the research to consider if optimizing your site for mobile users is a good business decision, then I would suggest starting there first.
Mobile Device Detection
Kentico offers device layouts that allow you to change the layout of your site depending on which device a user is browsing your site with. The technique it uses is called device detection, which relies on reading the incoming user agent string of the user's http request on your server and using that information to determine what to send back to the user's browser.
This process happens on the server side of your application and also relies on comparing the user agent string against a list of known user agent strings. Kentico in particular uses the 51degrees library to accomplish this. This has the drawback of not always having the most up-to-date user agent strings, so new devices won't be included in your list unless you keep it updated.
A big problem with this approach is that you wind up maintaining multiple sites and/or layouts. If you uses Kentico's mobile device detection, then any time you need to make changes to a page template you will also have to change each of the different layouts for that template.
You don't have to utilize Kentico's device layouts functionality to do mobile device detection. You could just redirect users to a different site entirely. In which case you can still very easily run into the problem of redundant maintenance.
Yes, there are ways of mitigating these issues, but most web devs agree that responsive design is usually the way to go if you want to cater to mobile users.
Responsive Design
This is a client-side design paradigm that relies on CSS media queries. I'm not going to explain how it works since googling "responsive design" will net you plenty of research material. The short version is your user's browser handles the adjustment of the layout by interpreting the CSS of your site. This means you maintain one CSS file for one site and the client handles the adjustments for you.
Now the down side to this is that it takes a takes a talented web designer to do it properly. There are many responsive frameworks out there that can help you out with this, but their appearance is pretty generic and will likely still require customization to fit your particular brand requirements. Some more popular ones are bootstrap, semantic-ui, and foundation.
I recently helped convert a large website in Kentico with a static design into a responsive design by rebuilding all of the page templates using Bootstrap and merging their stylesheets together so that the desktop version still looked the same and the mobile versions had a consistent appearance with the desktop version. This process took about two months and required a lot of UX and content strategy in addition to visual design and coding skills to accomplish correctly. It's not the hardest job in the world, but requires quite a bit of skill and time to do.
In my humble opinion there is no tool which will make (magically) your site responsive. AFAIK the only way is to redesign your site manually (new CSSs - maybe any UI framework, JS etc...)
Maybe you can still use out of the box features like device profiles and mobile pages. (But I am not sure how it works and if it is supported while using ASPX + Portal templates development models).

Functional UI Design Patterns for Oracle Application Express

Are there any Functional UI (usability or UX) design patterns for Oracle Application Express development? Simple flows, best practices in information UIs layout, validation, skinning or rendering and so on.
Unfortunately Oracle is not known for putting much emphasis on UX, so APEX-specific resources are scarce. A few suggestions:
Skinning can be done by downloading new Themes. While there's nowhere near as many themes as something like Wordpress, a Google search for "custom oracle apex themes" is still worth a try.
Smashing Magazine's guide to web forms is relevant and extremely valuable to any APEX developer. There's no harm in drawing inspiration from non-APEX web apps, as the design principles are generally the same regardless of the development framework.
Don't be afraid to get into the HTML and CSS of the template and tinker around to make it prettier/more usable.

Load Testing for Django Application

I have been looking for a tool to load test my django application. I was wondering if there is go to one for django web applications. I am required to login and place various requests to the site as multiple users and see how the site scales with traffic.
I have come across the following framweworks:
Seige
JMeter
Funkload
I was wondering if the community had any opinions on which is best, and fit together best with the django web application.
I welcome suggestions to any that I haven't mentioned as well.
Please and thank you
If you don't need to use javascript, and aren't looking to test your web server, I'm a huge fan of mechanize for this exact reason. spawn off several instances of mechanize that traverse your site, and you can get a very good idea of where your performance issues lie.
That said, if you do need javascript for anything, mechanize will not work as it has no ability to handle javascript. In this case you need to use selenium or webdriver. I've recently combined selenium with nunit for extremely great success. you can run several selenium instances and use selenium-rc to remotely track/control them. If you have some cash, browsermob does a fantastic job of this for you.
If you need to test your web server, look no further than apache bench.
Edit: This is my preferred approach. JMeter is very cool, but I found it a pain to use and an eyesore. YMMV though.

Web technology for a first small web project

I'm a C++ developer with basic Python skills. Here's the task, a friend of mine is running a small company and he asked me if I can make a website for him. I have no real deadline so I think it's a perfect opportunity to try sth new and do some web development.
User has to be able to add photos, change texts ect.
Do you think that Django would be an overkill for this kind of project? I have no experience with it. Perhaps I should try to customize some blog engine or Google Sites?
You may be interested in Google App Engine (http://code.google.com/appengine) which recently exhibited a rise in popularity. The application runs on Google's servers, eliminating the need to maintain Apache and worry about up-time. You basically get a Django-based solution with a data store, with an SDK which allows you to conveniently develop an application on your desktop and then upload it to appspot.com for everyone to use.
The documentation is great, and even if you eventually decide not to use it, the tutorial is excellent for getting you up to speed on Python and webapp design. There is also a codelab which contains a simple Wiki example.
If you need to set up quickly a very simple website, Wordpress can be the perfect choice.
Wordpress is born as a blogging platform, but in the newer version you can manage pages, contact form and so on. And you can find good plugins to expand its capabilities.
The administration interface of wordpress is clean and easy to use, the page or article editor is simple and powerful. Add an image in a post or in a page is easy and intuitive as in no other opensource CMS I've seen.
Django is a pretty flexible framework, it tends to scale well both up and down. It may be overkill to have to learn the whole API for just a simple site, but if you're looking to learn something new, and have some time to spare, then it's a fun platform to learn and work from. My suggestion would be to install the API and have a play around with it, read the Django book and see how you get on.
Maybe before diving into Joomla or Django a first step should be working with the technologies in a raw, pure way. Create a simple web page that excutes some server side script (python? php?) that retrieves data from a mySQL database and displays it. Throw in a little javascript too. Just so that you feel comfortable with the bare-bones fundamentals.
Then when you dive into the big frameworks and libraries, they won't seem so magical.
If you're really asking what the best tool for the job is, then you are going to have to give a little more detail than "first small web project." If what you are asking is more along the lines of you want to learn web application development and what you already know is C++ and python so what would be a good web application stack where you can leverage your current skillset, then here are some more suggestions.
Django is pretty cool. Every one has already talked about it here. As mentioned earlier, the google app engine is sort of based on Django.
Also, consider zope which is another python based web application container.
If you wanted to leverage your C++ knowledge instead, then consider Wt.
Why don't you take a look at the hello world examples for all three and decide which one looks the most interesting to you?
There are a multitude of website frameworks and kits that you could go with as opposed to starting development work from the ground up. It really depends on what kind of technology you want to go with, and how comfortable you feel with the language's potential. As mentioned above, there are things like Joomla, and If you want to stick to PhP frameworks, you could also use Drupal, which has a ton of documentation and support, and is relatively easy to understand.
If you want to venture into the Microsoft realm, you could look into DotNetNuke. It too is much like Drupal and Joomla, so it's a nice CMS framework, which you might feel more comfortable with since ASP.Net is based off of a programming language as opposed to a a scripting language, unlike Classic ASP or PhP. If you're going to go the Microsoft route, I also recommend taking a look at their BizSpark developer program - but that's more dependent on how serious your friend is on running his site as a business.
Then you also have a lot of things offered up by Google, such as their charts and visualizations -- which doesn't seems like something you're looking for, but for future reference, or cool little things like a map mashup.
It really depends on how much you're willing to learn and how much time you have and sometimes not having a rough deadline is the worst possible thing that could happen. Naturally everything starts to take longer. By the time you're done, the tech is either out of date, or you've taken so long that the business plan has changed.
using django it is easy, there is already an application for photo albums available at http://code.google.com/p/django-photologue/ it becomes with tagging too and maybe you just need to add some jquery effects to get done your site.
To get this done you just create a django project, add the applications to your settings, configure your urls and templates, and thats it.
Also i f you need a small version you can just use this code as a base of your new app.
have fun with django!!
sergio
Pylons is an excellent Python web framework based on WSGI standard. It has ported many of the features of Ruby on Rails so is great for rapid development.
I've been using it for a few years now combined with SQLAlchemy for my database layer and I've found it perfect for development of all my web sites.
It is easily good enough for production sites too.
The one downside I've found is slight complications getting it deployed on shared hosting but as long as you have shell access to your host, you should be fine.
You may try to install and customize Joomla (http://www.joomla.org/) It's full of stuff, easy to use and easy to customize also.
Everybody reaches for a framework, but, assuming this is running on Apache, why not just server side includes, and, since you have Python experience, Python CGI scripts that emit JSON for use in the UI by Javascript. By going with CGI/SSI you defer your decisions about framework and/or templating system until later, when you have more experience under your belt, but you should be able to get a reasonable amount of re-use of whatever Python code you write.
I'll cast my vote for Drupal (http://www.drupal.org)
I think LOVDbyLess might do exactly what you want. If all you need is basic blog and photo upload and a simple SNS, then check out this Ruby-on-Rails open-source thing. It's been evolving with new features and is pretty easy to set up.