Tutorials & articles written by Bård Farstad

eZ Publish Performance Optimization Part 1 of 3: Introduction and Benchmarking

Website performance is one of the major factors that contribute to a good user experience. A slow website drives visitors away, while a responsive website encourages visitors to explore and contribute.

Using the Squid Reverse Proxy to Improve eZ Publish Performance

Squid is an Open Source proxy application that can also be used as a reverse proxy. The difference between a proxy and a reverse proxy is that a proxy delivers content from multiple webservers to one user, while a reverse proxy delivers content from one webserver to multiple users. For example, a normal proxy might be used to provide a degree of anonymity to a user or to access servers that would otherwise be blocked; the proxy would access many other servers on the user's behalf. On the other hand, one of the reasons for using a reverse proxy is to speed up the delivery of content to all visitors of a particular server. This article shows how to use Squid with eZ Publish to improve the performance of your website.

Tuning MySQL for eZ Publish

This article explains how to tune a MySQL database for use with eZ Publish. MySQL is a database engine used by eZ Publish to store content. While other databases are supported by eZ Publish (such as PostgreSQL and Oracle), for performance reasons we recommend MySQL

Server Architecture for eZ Publish Hosting

To get optimal performance from your eZ Publish installation, you need to have the hardware infrastructure that can support your site's level of activity. Different sites and site usage patterns require different hardware configurations. In this article we look at the most common hardware configurations for eZ Publish deployments, ranging from single servers to clustered environments.

Clustering in eZ publish 3.8

This article explains the eZ publish 3.8 clustering architecture. It also discusses problems with clustering in previous eZ publish versions, shows how these issues have been resolved in version 3.8, and gives you an idea of the results you can expect from clustering.

Building a custom template for a news portal

eZ Publish uses templates (consisting of HTML and eZ Publish-specific code) to configure the graphical elements of the user interface. In this article, we show you how to work with eZ Publish templates through the example of creating a frontpage for a news portal.

Image Manipulation with eZ Components

The eZ Components is designed to simplify building applications with PHP 5.1. For example, they can make a developer's life easier when it comes to image manipulation. With eZ Components, you can analyse and scale images, also apply visual effects and other manipulations to them. The examples are based on the eZ Components rc1 release.

The sample code of this article is available for download.

Development Tools for eZ Publish

eZ Publish is a toolbox ready to be tweaked, tuned and configured. To make the most of eZ Publish you should use a development environment to boost your efficiency. In this article we take a look at some of the available tools for easing your eZ Publish site development.

Build Table-less CSS Layouts with eZ Publish

Whenever you read about design and HTML these days, you see references to so-called table-less CSS layout. This article covers how to use the power of CSS to theme eZ Publish 3.5. Here, we'll walk through every step required to create a new theme using CSS.

Clustering eZ Publish

This article shows how you can set up eZ Publish in a clustered environment. Using the techniques outlined in this article you can get eZ Publish running in a load-balanced and failover environment ensuring higher uptime and better performance.

Build a WebDav-Enabled Intranet With eZ Publish

Every company and organization needs to communicate internally, and an intranet is a valuable tool in this continuous process. This article shows how you can configure eZ Publish to share information, and to restrict information over your intranet. It also shows how you can replace your existing network file system with an accessible virtual WebDav-enabled versioned file system.

eZ debug

Timing: Jan 17 2025 23:59:40
Script start
Timing: Jan 17 2025 23:59:40
Module start 'community'
Timing: Jan 17 2025 23:59:41
Module end 'community'
Timing: Jan 17 2025 23:59:41
Script end

Main resources:

Total runtime0.5356 sec
Peak memory usage4,096.0000 KB
Database Queries276

Timing points:

CheckpointStart (sec)Duration (sec)Memory at start (KB)Memory used (KB)
Script start 0.00000.0050 587.5234172.9766
Module start 'community' 0.00500.3873 760.5000846.6875
Module end 'community' 0.39220.1433 1,607.1875411.7422
Script end 0.5355  2,018.9297 

Time accumulators:

 Accumulator Duration (sec) Duration (%) Count Average (sec)
Ini load
Load cache0.00390.7238200.0002
Check MTime0.00150.2716200.0001
Mysql Total
Database connection0.00070.124210.0007
Mysqli_queries0.440382.21332760.0016
Looping result0.00320.60322710.0000
Template Total0.520497.220.2602
Template load0.00140.267020.0007
Template processing0.518996.893220.2595
Template load and register function0.00010.020210.0001
Override
Cache load0.00100.1908310.0000
states
state_id_array0.00651.2150110.0006
state_identifier_array0.00881.6457110.0008
Sytem overhead
Fetch class attribute name0.00170.3135110.0002
Fetch class attribute can translate value0.00130.242910.0013
class_abstraction
Instantiating content class attribute0.00000.0039110.0000
XML
Image XML parsing0.00030.048710.0003
General
dbfile0.00591.1049180.0003
String conversion0.00000.000510.0000
Note: percentages do not add up to 100% because some accumulators overlap

CSS/JS files loaded with "ezjscPacker" during request:

CacheTypePacklevelSourceFiles
CSS0extension/community/design/community/stylesheets/ext/jquery.autocomplete.css
extension/community_design/design/suncana/stylesheets/scrollbars.css
extension/community_design/design/suncana/stylesheets/tabs.css
extension/community_design/design/suncana/stylesheets/roadmap.css
extension/community_design/design/suncana/stylesheets/content.css
extension/community_design/design/suncana/stylesheets/star-rating.css
extension/community_design/design/suncana/stylesheets/syntax_and_custom_tags.css
extension/community_design/design/suncana/stylesheets/buttons.css
extension/community_design/design/suncana/stylesheets/tweetbox.css
extension/community_design/design/suncana/stylesheets/jquery.fancybox-1.3.4.css
extension/bcsmoothgallery/design/standard/stylesheets/magnific-popup.css
extension/sevenx/design/simple/stylesheets/star_rating.css
extension/sevenx/design/simple/stylesheets/libs/fontawesome/css/all.min.css
extension/sevenx/design/simple/stylesheets/main.v02.css
extension/sevenx/design/simple/stylesheets/main.v02.res.css
JS0extension/ezjscore/design/standard/lib/yui/3.17.2/build/yui/yui-min.js
extension/ezjscore/design/standard/javascript/jquery-3.7.0.min.js
extension/community_design/design/suncana/javascript/jquery.ui.core.min.js
extension/community_design/design/suncana/javascript/jquery.ui.widget.min.js
extension/community_design/design/suncana/javascript/jquery.easing.1.3.js
extension/community_design/design/suncana/javascript/jquery.ui.tabs.js
extension/community_design/design/suncana/javascript/jquery.hoverIntent.min.js
extension/community_design/design/suncana/javascript/jquery.popmenu.js
extension/community_design/design/suncana/javascript/jScrollPane.js
extension/community_design/design/suncana/javascript/jquery.mousewheel.js
extension/community_design/design/suncana/javascript/jquery.cycle.all.js
extension/sevenx/design/simple/javascript/jquery.scrollTo.js
extension/community_design/design/suncana/javascript/jquery.cookie.js
extension/community_design/design/suncana/javascript/ezstarrating_jquery.js
extension/community_design/design/suncana/javascript/jquery.initboxes.js
extension/community_design/design/suncana/javascript/app.js
extension/community_design/design/suncana/javascript/twitterwidget.js
extension/community_design/design/suncana/javascript/community.js
extension/community_design/design/suncana/javascript/roadmap.js
extension/community_design/design/suncana/javascript/ez.js
extension/community_design/design/suncana/javascript/ezshareevents.js
extension/sevenx/design/simple/javascript/main.js

Templates used to render the page:

UsageRequested templateTemplateTemplate loadedEditOverride
1community/articles.tpl<No override>extension/community_design/design/suncana/templates/community/articles.tplEdit templateOverride template
11content/datatype/view/ezxmltext.tpl<No override>extension/community_design/design/suncana/templates/content/datatype/view/ezxmltext.tplEdit templateOverride template
12content/datatype/view/ezxmltags/paragraph.tpl<No override>extension/ezwebin/design/ezwebin/templates/content/datatype/view/ezxmltags/paragraph.tplEdit templateOverride template
3content/datatype/view/ezxmltags/link.tpl<No override>design/standard/templates/content/datatype/view/ezxmltags/link.tplEdit templateOverride template
1content/datatype/view/ezxmltags/strong.tpl<No override>design/standard/templates/content/datatype/view/ezxmltags/strong.tplEdit templateOverride template
1pagelayout.tpl<No override>extension/sevenx/design/simple/templates/pagelayout.tplEdit templateOverride template
 Number of times templates used: 29
 Number of unique templates used: 6

Time used to render debug report: 0.0002 secs