Professional Documents
Culture Documents
Wakefly Kentico Site Audit Sample
Wakefly Kentico Site Audit Sample
Wakefly Kentico Site Audit Sample
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
● Scheduled tasks
● High priority recommendations
● Kentico system settings
● Additional recommendations
● Page Aliases
Performance
https://www.xyzcorp.com
5
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
Priority: Effort:
Image Optimization
Assessment
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
For XYZ Corp, Google PageSpeed insights detected 13 blocking scripts and 3 blocking stylesheets.
11
Additional Details
Code Audit for www.xyzcorp.com
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
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
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
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:
Page Templates
Assessment
Recommendation
Code Audit for www.xyzcorp.com
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
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
Priority: Effort:
Medium Medium
29
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
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.
Recommendation
Code Audit for www.xyzcorp.com
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).
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
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.