• Commerce,  Episerver,  Order,  Performance,  SQL Server,  Uncategorized

    Fixing a stored procedure

    At Episerver development team, we understand the importance of good performance. Who would not like a lightning fast website? We work hard to ensure the framework is fast, and we seize (almost) every opportunity to make it faster. You know in Commerce 10.2 we introduced a new cart mode – serializable cart, and it’s proven to bring great performance compared to the “old/traditional” approach. Our own tests showed an improvement of 3-5x times faster. But can it be even faster? Probably yes. And actually we did some improvements in later versions. In the scope of this blog post, we will just focus into a specific aspect – and to learn…

  • CMS,  Commerce,  Episerver,  Performance,  SQL Server,  Uncategorized

    Maintaining your indexes

    Indexes are crucial to SQL Server performance. Having the right indexes might make the difference of day and night with your application performance – as I once talked here. However, even having the right indexes is not everything. You have to keep them healthy. Indexes, as any other kinds of storage, is subjected to fragmentation. SQL Server works best if the index structure is compact and continuous, but with all of the inserts/updates/deletes, it’s inevitable to get fragmented. When the fragmentation grows, it starts affecting the performance of SQL Server: Instead of having to read just one page, it now have to read two, which increases both time and resource…

  • CMS,  Commerce,  Episerver,  Uncategorized

    Episerver caching issue with .NET 4.7

    Update 1: The bug is fixed in .NET 4.7.1 (thanks to Pascal van der Horst for the information) Update 2: The related bug is fixed in CMS Core 10.10.2 and 9.12.5. If upgrading to that version is not an option, you can contact Episerver support service for further assistance. Original post: If you are using Episerver and update to .NET 4.7 (even involuntarily, such as you are using DXC/Azure to host your websites. Microsoft updated Azure to .NET 4.7 on June 26th) , you might notice some weird performance issues. If your servers are in Europe, Asia or Australia, then you can see a peak in memory usage. If your servers in…

  • SQL Server,  Tips,  Uncategorized

    Import a bacpac to SQL Server

    This is more of a note-to-self. I sometimes have to import a bacpac file from customer’s database (usually from Azure SQL database) to my local machine – . For most of the time it’ll be very easy when the databases are in .bak format, but for .bacpac file it can be pretty complicated. Sqlpackage.exe is the standard tool to import the .bacpac file, and it can be found with the installation of Visual Studio (for example C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\130) or SQL Server ( C:\Program Files (x86)\Microsoft SQL Server\130\DAC\bin ). Latest version should be used because they can support the older formats (.bacpac exported from older SQL Server version),…

  • Catalog,  Commerce,  Episerver,  Uncategorized

    Price optimizing: to be or not to be

    It can be quite confusing when you first edit prices in Episerver Commerce. To your surprises, some of the prices you imported or edited might disappear, or change, without your consent! What happened? To answer that question, it’s essential to know there are two pricing system in Commerce: IPriceService and IPriceDetailService. They have some different characteristics, and one of them is very important: the default implementation of IPriceDetailService saves prices as-is, while the default implementation of IPriceService does not: it optimizes prices before saving. Prices which are best for customers will be favored over the “less good” ones.

  • CMS,  Episerver,  Performance,  Uncategorized

    Episerver CMS performance optimization – part 1

    Update: In Episerver CMS 11, released today (November 21st 2017), the simpleaddress router has been moved to the last of the route table. Original post: This is an unusual post – it is not about Commerce – my area of expertise, but about CMS. Recently I’ve been working on some support cases where SQL Server instance is on high utilization, and in some scenarios it eventually slows down the site. After investigation, it’s likely to come from a small, simple and helpful feature: Simple address. CMS content can have a property named “Simple address”, which allows you to create a “shortcut” url for that content. So if you have one page…

  • Catalog,  Commerce,  Episerver,  Performance,  Tips,  Uncategorized

    Can Episerver Commerce support our catalog size?

    One of the questions customers usually raise during evaluation of Episerver Commerce is : “Can it support our catalog size? We have (a very big number of ) entries. Will it work?” The answer is (of course, as always): It depends! I’ve seen “big” catalogs. Some big enough in number – 1 million entries catalogs are not very uncommon, and some are even (much) bigger. Theoretically, Episerver Commerce can support up to 512 millions 1 billion of entries (!), so you can have pretty much anything in your catalog until you reach a hard technical limit. Just for comparison, Amazon.com, which is arguably the biggest eCommerce site on the world, has…

  • Commerce,  Episerver,  Order,  SQL Server,  Uncategorized

    Tale from inside TransactionScope

    One of the last things you want to get from your Commerce site is that the order data is gone. What can be more confused than if your log shows that the cart has been converted into a purchase order, you even got the PO number, but after that, the order disappears? It’s nowhere to be found, even if you look into database. It’s kind of magic, but not the kind of magic you would want to have. But everything happens for a reason. And actually it’s with a good reason: data consistency. Episerver Commerce has the concept of TransactionScope. Simply put, it allows two or more database operations to…

  • gaming,  Uncategorized

    PS4 firmware 4.5 wifi problem fixed

    And finally the much anticipated 4.5 firmware of PlayStation 4/4 Pro has arrived, with some very neat features: extended storage, custom themes. It’s a big improvement for PS4 users, well, almost: the firmware comes with a big problem for ones who are using wifi: the download speed is now terrible, and even worse, the lag in game is making the games unplayable. Before 4.5, I had no problem joining matches on Uncharted 4, and playing Titanfall was very smooth – ping is never more than 100ms. After 4.5, I can’t hardly join a match on Uncharted 4 (errors in connections), and the lag in Titanfall spikes to more than 2000ms,…

  • Catalog,  Commerce,  Episerver,  Performance,  Tips,  Uncategorized

    The Catalog UI trade-off: performance or better UI

    I supposed this is a well known feature, but I was asked more than once about it, so it’s better to write something here to clarify the confusions. If you have some very, very big catalogs, you probably have seen this “notification” in Catalog UI By default, the Catalog UI groups a product and its variations in a parent-children view (they are not exactly parent-children, by the way). However, to do that, it needs to know about all the entries in that specific category. If it’s a small category, it should be no problem, but if it’s big one, then it’s inevitable slow. The lazy loading which the catalog content…