Recently I worked with a support case from a customer. They complained that the catalog import is too slow for them, it took them 6-7 minutes to import 200 entries. Their catalog is about 50k entries, which is not particularly big, but not small neither, and with that rate, it does mean they will have to wait for days for the catalog imported. This is of course not good and I jumped in when I became available. (In the end, I like performance tuning so much that I find it hard to refuse a case like this)
I did try to import their catalog on my development machine – a relatively powerful desktop with Intel Core i7 4790 CPU, 16GB of RAM and 256GB SSD on Windows 10/.NET 4.5.2. Everything went quite well – I achieved a rate of 200 entries per 9-10 seconds, which is, IMO, more than enough. (And this is on Commerce 9, on Commerce 8 then I would suspect it’s 3-4 times slower).
After some conversations with Episerver’s developer support team, it seems that the slowdown only happens with the re-import. I tried it again with re-import. Hmm, something is wrong here. The import is much slower and it eventually stops at some points. The debugger shows that it starts quite well, even faster than a new import (200 entries per 3-4 seconds, a very recent version of Commerce made an improvement of skipping the entries which are not changed to speed up the import), but it slows down by time. Profiling does not show anything obvious, most of the time was spent with loading the MetaObject:s – which is kind of expected.
I was starring at the import tab, and wondering what can be wrong, and suddenly I realized the answer is what I was looking at:
This post is strictly my personal opinions, it does not represent my employer’s views in any way.
Login/register page is essential to any site, especially any Commerce site. You should always follow the proven, established practices, but yet many sites still have issues with their login and register page. Make sure that you do not do anything mentioned below:
Use HTTP for login/register page.
You might say “What?”. It’s 2016 already and certificate is cheap as hell (even free, if you count Letsencrypt). Still, there are Commerce sites use HTTP for login/register. This, sadly, happens to one of my favorite sites, itsajten:
In case of itsajten, there is not much of sensitive information an attacker can get if he sniffs the network and gets my password. I’m in Sweden and almost everything is transparent, even my income. But still, it does mean that I’m subject to social engineering attack. I notified itsajten about this but never heard from them since – which is a pity. They are otherwise very nice and they offer some of the best prices on the item I interested.
It’s quite often to see some questions related to issues posted in Episerver World forums. While I (and most of people there) are willing to help, it still takes time for you to write the question and wait for an answer. Sometimes, the answer can be incomplete or even incorrect, because the people answering your question do not have the full context as you do. The truth is, you’re the person who know the most about your site, and you can do something to diagnose it. Those steps below are in the order you should take to diagnose your site:
Logging is your (another) friend. When something seems to be wrong, check your log file, or turn down your logging level to see if you can see any trace there. In some case, no log found can also be a trace to solve the problem.
Does iisreset solve your problem? No I’m not suggesting you to run iisreset every minute on your production site, but it might isolate the problem – if it does, then the problem might relate to cache, or initialization modules. If it does not, well, it can be anything else. But at least it’s not caused by certain things – the key is to narrow down the causes of problem. You can also try to call
if the issue seems to related to the “modern” cache – such as ContentProvider. Note that ISynchronizedObjectInstanceCache does not control everything and iisreset is still the more powerful cache-clearing option.
I was lucky enough to be able to attend this year Microsoft Build conference. Almost 5000 tickets were sold out in just 1 minute – according to Microsoft. And that was with a pretty hefty price – 2195 USD for 3 days conference.
Yes I’m pretty excited. This conference is for developers so Microsoft intends to shows their most exciting technologies for the year ahead.
One thing I was most disappointed about is this year Microsoft gives no hardware as gift. Instead, they gave us an Azure account. I haven’t checked it, but it is supposed to value at $1000 or so (It is an account for some of the Code Labs, it’s not a gift from Microsoft). Last year, it was a HP x360 Spectre laptop, and the year before that attendees got an Xbox One (which was 499$ at the time) and 500USD credit in Microsoft Store. Microsoft explained that they want offer a “deeper technical experience” instead. I don’t know if they’ll deliver that promise, but a hardware gift would be really nice. I did hope for a HP Elite X3 this year. Lesson learned: Never set your expectation too high.
Well, I might start a living based on writing. If my books sell good enough. Yes, it’ll be available on Leanpub and you can register now to get a notification: https://leanpub.com/gitineasysteps.
In this Easter I decided to start a new book project, based on what I’ve been doing daily: Git in easy steps.
Who is this book for?
This book explains Git concepts in a simple way, with examples in Git Extensions – the Git client to beat. It will walk through the flow and see what should we do, and why. Needless to say, it’s a beginner book. If you are already a Git expert, look else. (Of course you are still welcome to buy this book, well, you know, to complete your collection).
One of the most important features in CatalogContentProvider is it bring versioning to catalog content. It was somewhat limited with Commerce 7.5 (the languages handling was a bit sloppy), but it has been much more mature since Commerce 9. The versioning system in Commerce 9 is now more or less on par with versioning in CMS, and it’s a good thing.
If you’re new to Episerver CMS/Commerce, then it might be useful to know how version and save action work in content system. Of course, you can skip this section if you already know about it. The version status is defined in EPiServer.Core.VersionStatus. When you save a content, you have to pass a EPiServer.DataAccess.SaveAction to IContentRepository.Save method.
Expect yourself to do many things, if not everything. You’ll be an administrator, a developer and a writer, all at the same time. This blog is the first time I install WordPress, first time I install and configure Apache, first time I configure CNAME or so, first time I use Google Adsense. It was not smooth all the way, but it’s not that hard and it’s really rewarding when I got it works. One after one. I failed sometimes, like when I tried to make WordPress runs on PHP7 (I’m not a PHP developer after, so I run away when the problem gets out of hand), but for most parts, I can find an answer from here and there on the Internet. Thank you, internet.
Attracting visitors is hard. Internet is full of things and no matter how you try, there are always other content somewhere more interesting than yours. Except if you are exceptional good at writing, or you are famous person, most of the people will not visit your website. Not even one. And sadly enough, many of your visitors will not return, even if your website was helpful to them. You helped them to solve a problem and that’s it. Attracting visitors is already hard enough, and keeping them coming back is even harder.
This “new” approach (today it’s not new anymore, perhaps we can call it newer?) was introduced in Commerce 7.5 to make the routing of Catalog contents inline with CMS content. The core concept of this approach is to reflect the structure of contents to the structure of the Uri, for the discoverability. With SEO Uri approach, customers will never know how to get to the parent node, to see the other items in same category. With the partial routing, they can. To allow that, every catalog content has a piece of information – RouteSegment. This is saved in CatalogItemSeo as UriSegment, but is hidden for editing in Commerce Manager
One of the most wonderful impacts of Internet is it makes many knowledge freely available. You can still attend the courses from the best universities in the World, without having to spend a bunch of money to get into US. You can now access the precious contents from the other half of the world. Of course, it’s still far from effective as when you come to classes, having friends and assignments, for real, but it’s undeniably a huge benefit.
The knowledge is yours!
MIT 6.00.1x: Introduction to Computer Science and Programming Using Python
Development can be hard – as developers we want to spend time to write code to solve problems. Luckily, we have tools to solve our problems – so we can save the precious brain power for the coding, and let them handle everything else.
These tools are used by me on Windows, but most of they are available on multi-platforms.
Seriously, it’s a tool to search for everything, by name:
It’s incredibly helpful when you want to jump to check something outside of your solution, but you don’t know exactly where is it located. Save me 5 seconds for every file and I use it, like, (at least) 50 times a days. 6 days a week (on average). Imagine how much times I saved?
Sublime Text is widely considered as the defacto standard for text editing – it’s fast, it’s smooth, it has bunch of useful (or even awesome) plug-ins, and because everyone uses it for everything, the guides is freely available everywhere. But with two caveats: It’s not free (79$ is not really expensive, but not cheap neither), and it has been rarely updated recently (it was updated, like two times last year). Many questions have been raised about the development in its forum, but they are all left unanswered.