Wakefly Kentico Site Audit Sample

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 35

Sample Kentico

Website Audit

XYX CORPORATION

NOVEMBER 2017

Wakefly, Inc. ∙ 293 Boston Post Road West Suite 140, MARLBOROUGH, MA 01752 ∙ www.wakefly.com
2

Overview
Code Audit Synopsis for www.xyzcorp.com

The code audit identifies issues which diminish performance, cause site errors, or hinder
content maintainability. This report covers the code audit’s prominent and actionable findings,
divided into four sections.

The first three sections will cover performance, Kentico site configuration and architecture &
design. The final section details Wakefly’s recommended fixes. “High priority
recommendations” are straightforward fixes with immediate improvements, whereas
“additional recommendations” require more effort for modest enhancements.
3

What We Will Cover

1 PERFORMANCE 3 ARCHITECTURE & DESIGN

● Google Analytics site speed ● Page Templates


configuration ● Database Table Schemas
● Image Optimization ● Page hierarchy structure
● Render-blocking Javascript & CSS ● Web Parts

2 KENTICO CONFIGURATION 4 RECOMMENDATIONS SUMMARY

● Scheduled tasks
● High priority recommendations
● Kentico system settings
● Additional recommendations
● Page Aliases
Performance
https://www.xyzcorp.com
5

Google Analytics Site Speed Configuration


Assessment

According to Google Analytics,


XYZ Corp has about 10,000 daily
pageviews.

Since GA Site Speed samples only


1% of page views by default,
approximately 100 pageviews
comprises XYZ Corp’s daily site
speed readings. Small sample
sizes are prone to skews from
outliers.

By default, Google Analytics Site Speed samples page load times on 1% of pageviews, on up to a maximum of 10,000 page views per
day. For sites receiving fewer than a million daily page views, it is recommended to raise the sample rate to improve site speed
readings accuracy.
6

Additional Details
Code Audit for www.xyzcorp.com

As shown in the previous screenshot, XYZ Corp saw an exceptionally high average page load
time of 11.42 seconds on March 27, 2017. 73 pageviews were sampled for speed that day.
Further exploration in GA reveals two of those sampled pageviews were from a visitor in
Orlando, FL who had an average page load time of 285 seconds! This isolated incident does
not suggest a site performance issue, but rather a visitor with Internet connection issues
skewed the results.

Since GA samples a maximum of 10,000 page views per day, sample rate * daily
pageviews should be lower than 10,000. This is because GA stops collecting data once it hits
its quota, and ideally its sampling should include views from all times throughout the day.
Since XYZ Corp’s daily page views is close to GA's 10,000 sample maximum, a 30% sample
rate should be conservatively generous.

XYZ Corp’s low traffic would benefit from a 100% sample rate.
7

Recommendation
Code Audit for www.xyzcorp.com

Increase the site speed sample rate in the GA JavaScript code.

Priority: Effort:

High Very Low


8

Image Optimization
Assessment

Many large image files occur on XYZ Corp’s website


Image optimization reduces image file and would benefit from optimization.
size with minimal quality loss.
Please refer to list for details
This leads to faster page load times
since the amount of data sent to
visitors is reduced.
9

Recommendation
Code Audit for www.xyzcorp.com

Optimize images to reduce file size. Resizing images which are larger (width x
height) than necessary for their display on the site can further reduce image file
size.

Priority: Effort:

High Low
10

Render-Blocking JavaScript & CSS


Assessment

When JavaScript and CSS files are loaded


before content, the visitor will see nothing on
the site until these resources are loaded.

In some cases, this wait is inevitable because


the content's rendering is strictly dependent
on that JavaScript and CSS. However, scripts
and styles that are not required for initial
content rendering should be deferred until
after content has been loaded.

For XYZ Corp, Google PageSpeed insights detected 13 blocking scripts and 3 blocking stylesheets.
11

Additional Details
Code Audit for www.xyzcorp.com

These tasks require further assessment and planning.

Consider using the deferred loading approach for JavaScript libraries: jQuery, Bootstrap,
Moment, Modernizr, and bkmenu.js.

Currently the site contains inline JavaScript code that frequently uses jQuery. This
dependency must be addressed if using deferred loading on the jQuery library.

The Kentico CMS is responsible for the remaining blocking scripts. While Kentico provides no
recommendation for deferred loading of their scripts, they can be compressed/minified.
12

Recommendation
Code Audit for www.xyzcorp.com

Use macro expressions to combine the three custom stylesheets into a single file
and asynchronously load or defer external scripts.

Priority: Effort:

Medium High
Kentico Configuration
https://www.xyzcorp.com
14

Scheduled Tasks
Assessment

● Site Specific
Kentico's KInspector tool identified
○ Check bounced e-mails (1-hour)
the following important scheduled
■ DISABLE SCHEDULED TASK! - Module is
tasks.
NOT used.
○ Clear content of old shopping carts (1-day)
It recommends disabling several
○ Content publishing (1-minute)
unused scheduled tasks, and it also
○ SalesForce replication (1-hour)
recommends running some tasks
■ DISABLE SCHEDULED TASK! - Module is
externally:
NOT used.
○ Users delete non activated user (1-hour)

Scheduled tasks are registered code methods which run on a specified schedule. They are often used for database/file cleanup,
synchronization, and subscription notification services.

Resource-demanding tasks should be scheduled during non-peak hours, and tasks should only run as frequently as needed.
Particularly resource-consuming tasks should be registered through an external Windows service.
15

Scheduled Tasks
Assessment - continued

● Global
○ Clean Azure storage cache (1-day)
○ Clean chat online users (1-minute)
■ NOT ABLE TO determine if module is used - disable if not used.
○ Clean chat rooms scheduled to delete (1-day)
■ NOT ABLE TO determine if module is used - disable if not used.
■ RUN THE task as EXTERNAL
○ Clean email queue (1-day)
○ Clean old chat records (1-day)
○ Clean old initiated chat requests (1-hour)
■ NOT ABLE TO determine if module is used - disable if not used.
○ Delete image editor history AHDQ-WCMP-01 (1-hour)
○ Delete image editor history AHDQ-WCMP-02 (1-hour)
○ Delete inactive contacts (o-once)
■ RUN THE task as EXTERNAL
○ Delete old file system cache files AHDQ-WCMP-01 (1-hour)
○ Delete old file system cache files AHDQ-WCMP-02 (1-hour)
■ RUN THE task as EXTERNAL
○ Delete old temporary attachments AHDQ-WCMP-01 (1-hour)
○ Delete old temporary attachments AHDQ-WCMP-02 (1-hour)
○ Delete old temporary upload files AHDQ-WCMP-01 (1-day)
○ Delete old temporary upload files AHDQ-WCMP-02 (1-day)
■ DO NOT RUN THE task as EXTERNAL
16

Scheduled Tasks
Assessment - continued

○ E-product reminder (1-day)


○ Execute search tasks AHDQ-WCMP-01 (4-hour)
○ Execute search tasks AHDQ-WCMP-02 (4-hour)
○ Membership reminder (1-day)
■ RUN THE task as EXTERNAL
○ Optimize search indexes AHDQ-WCMP-01 (1-day)
○ Optimize search indexes AHDQ-WCMP-02 (1-day)
○ Process analytics log AHDQ-WCMP-01 (1-minute)
○ Process analytics log AHDQ-WCMP-02 (1-minute)
○ Process external integration tasks (1-day)
■ DISABLE SCHEDULED TASK! - Module is NOT used.
○ Process forum thread views (2-minute)
○ Recalculate time zone (o-once)
○ Remove expired sessions (1-minute)
■ DISABLE SCHEDULED TASK! - Module is NOT used.
○ Report subscription sender (1-minute)
■ DISABLE SCHEDULED TASK! - Module is NOT used.
○ Send email campaigns (1-minute)
○ Send module usage data (1-week)
○ Send queued emails (1-minute)
■ RUN THE task as EXTERNAL
○ Update database session (2-minute)
■ DISABLE SCHEDULED TASK! - Module is NOT used.
17

Recommendation
Code Audit for www.xyzcorp.com

For the schedule tasks identified as unused, verify that they are actually unused
and then disable them in Kentico's Scheduled Tasks application.

Setting tasks to run internally vs. externally requires Kentico's Scheduler Windows
service is installed and running on your web servers. Refer your system
administrator to Kentico's Scheduler Windows service installation guide. Once the
service is installed, scheduled tasks can be configured to run externally as
described in Kentico's external scheduler service documentation.

Priority: Effort:

Low Medium
18

System Settings
Assessment

Kentico's Settings application offers performance settings under


Current performance settings look
System > Performance:
correct.
● Output compression: Enables compression for the HTML
Compression and caching settings
output code of all pages, reducing the amount of data sent
are enabled per Kentico's
to visitors using browsers that support compression.
recommendations. No pages
● Server caching: The server stores frequently accessed
currently use output caching.
resources in memory for faster access.
● Client caching: The visitor's browser stores resources
downloaded from the site, such as images, CSS files, and
JavaScript files, making subsequent page loads faster.
● Output caching: The server stores the entire HTML output
of requested pages in memory for faster access. Note
pages must enable output caching for this setting to take
effect:
● Resource compression: CSS files and JavaScript files
are compressed to reduce their size.
19

Recommendation
Code Audit for www.xyzcorp.com

Kentico recommends enabling output caching whenever possible, especially on high-traffic pages.
However, before enabling page output caching, be aware of these considerations:
● Pages with content targeted for particular users and pages which have language-specific content must be cached separately.
● Pages with dynamic content must use substitution macros to exclude the dynamic sections from caching. An example is an event
listing page which lists events whose event date is later than the current date (the current date makes this dynamic).
● When a content editor makes an update which is displayed on a page with output caching enabled, that update might not display
until the page's cache is cleared. Cache dependencies can be specified to ensure cache is immediately cleared when dependent
Kentico items are updated.

A minor performance improvement can be had from enabling output caching on high-traffic pages.

Priority: Effort:

Low Medium
20

Page Aliases
Assessment

Kentico's KInspector tool detected a handful of


Page aliases allow content editors to
redundant page aliases on XYZ Corp’s site. These
specify alternative URLs for pages, all
duplicate page aliases should be removed.
within Kentico's Pages application.
Primary uses are vanity URL creation and
Please refer to list for details
quick SEO support for moved pages.

Excessive use of page aliases can reduce


site performance. They also enable URL
collisions (e.g., multiple pages can use the
same page alias), resulting in page load
behavior issues.
21

Recommendation
Code Audit for www.xyzcorp.com

Remove redundant page aliases. Note: due to the low volume of duplicate page
aliases, this fix will not noticeably improve site performance.

Priority: Effort:

Very Low Low


Architecture & Design
https://www.xyzcorp.com
23

Page Templates
Assessment

XYZ Corp’s page templates look good - no performance


The structure of page templates can affect nor display issues detected.
performance and maintainability.

Master page templates are particularly


important since they can be used by every
page on a site. To ensure correct content
rendering, page templates must match the
site's page hierarchy structure.
24

Recommendation
Code Audit for www.xyzcorp.com

No actions are recommended


25

Database Table Schemas


Assessment

A schema conflict exists on tables used by XYZ Corp. These instances


Correctly configured of the ArticlePublishDate column use different data types (two use
database table schemas dates, and the other uses nvarchar):
ensure that queries execute
COLUMN_NAME TABLE_NAME DATA_TYPE TABLE_CATALOG
efficiently and without error.

Kentico has restrictions on ArticlePublishDate Sample1_Article date SampleWCMSQL


page type's field naming
conventions that must be
ArticlePublishDate Sample2_Article nvarchar SampleWCMSQL
followed.

ArticlePublishDate Sample_Blog_Article date SampleWCMSQL


26

Additional Details
Code Audit for www.xyzcorp.com

These conflicts trigger an error when using Kentico's content editor SQL search. Here is
Kentico's description for this error:

“This error is caused by at least two different page types (for example A and B) having a
field named in the same way (for example FieldName) but in each page type the field
data is stored as a different data type (for example for A, it is 'Text' and for B it is
'GUID').”

No other schema issues were detected, and there are no performance concerns here.
27

Options for Remediation


Code Audit for www.xyzcorp.com

There are two options for fixing this content editor SQL search error:

1. Update the column definitions to all use the same data type. In this case, we could use
the "date" data type for the ArticlePublishDate column on all tables.

2. Rename the columns to use distinct names. For example, we could prefix the column
names with the name of the table: for the Sample1_Article table the column name
would become Sample1_Article_ArticlePublishDate.
28

Recommendation
Code Audit for www.xyzcorp.com

Based on the Sample1_Article tables' usage of the ArticlePublishDate field,


option #1 looks most feasible. XYZ Corp and Wakefly should coordinate to ensure
data integrity and functionality is retained.

Priority: Effort:

Medium Medium
29

Page Hierarchy Structure


Assessment

No performance concerns are detected. All pages have


For performance reasons, Kentico far fewer than 1000 direct child pages.
advises that pages have at most 1000
direct child pages. The page hierarchy looks readily accessible for SQL
queries, though some organizational changes could
A logical page hierarchy structure benefit page management.
simplifies the SQL queries used to
display content on listing pages. A clean
page hierarchy structure makes it
easier for content editors to manage
and apply content revisions.
30

Recommendation
Code Audit for www.xyzcorp.com

XYZ Corp has 94 pages at its top level - a somewhat high count. To improve
organization, consider moving some of these pages to purpose-specific sections or
subfolders.

Note: moving pages to a new location requires proper planning and testing, due to
SEO and technical considerations.

Priority: Effort:

Low Medium
31

Web Parts
Assessment

XYZ Corp uses several custom web parts having a clear


Web parts are Kentico's building blocks purpose and appropriate usage. Their code does not
for page content and functionality. raise performance concerns.

Some web parts simply display editable The use of Kentico's built-in web parts seems
content, whereas other web parts appropriate as well. Most pages consist of EditableText
retrieve, transform, and display large and StaticHTML blocks which pose no performance
quantities of content from other concerns. Of the built-in web parts, the most
sources. More involved web parts must performance-sensitive one used is the
be designed carefully to mitigate UniversalViewerWithCustomQuery on the master
performance issues. template. Its usage for the site's main navigation is
appropriate and mindfully efficient.

Please refer to list of web parts reviewed for details


32

Recommendation
Code Audit for www.xyzcorp.com

No actions are recommended


Recommendations Summary
https://www.xyzcorp.com
34

High Priority Recommendations


http://www.xyzcorp.com

Issue Found Recommended Fix

Based on current site traffic and Google Analytics’ default sample rate, a
fairly small sample size of about 100 page loads for xyzcorp.com
comprises average daily page speed load times. We recommend
Google Analytics Site Speed Configuration
increasing this sample rate to prevent data skews from outliers (e.g., a
user with an exceptionally slow Internet connection will cause a
noticeable average page load time spike for that day).

XYZcorp.com has large image files loading on every page. An image


optimization tool can reduce image file size with minimal quality loss. To
speed up page load times, we recommend running all images on both
Image Optimization
sites through an optimization tool, and then replacing existing images
with these optimized versions.

the case study listing page and case study pages have misconfigured
templates. This prevents these two page types from showing most of
Page Templates
their content. We recommend correcting these templates so affected
pages display correctly.
35

Additional Recommendations
http://www.xyzcorp.com

Issue Found Recommended Fix

Kentico admin search functionality is not working. While this poses no


issue for site visitors, it does prevent content editors from using this
Database Table Schemas feature. This issue is caused by a few article page type schemas having
incompatible field definitions. We recommend fixing this schema issue so
content editors can utilize Kentico’s admin search functionality.

XYZCorp.com waits until all style and script files are loaded before
displaying any content. However, not all of these files are necessary to
properly display pages’ initial content. Page load time improvements are
Render-Blocking JavaScript and CSS
possible by only loading files that are required for initial content display,
then loading the content, and finally loading additional files. This is a
moderately technical change that requires careful planning.

XYZCorp could increase performance by using Kentico page caching.


Note pages with dynamic content require special accommodations in
Kentico Performance Settings
order to utilize page caching. We recommend configuring and enabling
page caching on high traffic pages.

XYZCorp has an above-average quantity of pages (94) at the top level.


To improve site structure and content maintainability, we recommend
Page Hierarchy Structure grouping some of these pages within subfolders. Note moving pages to a
new location requires proper planning and testing, due to SEO and
technical considerations.

You might also like