Skip to content Skip to navigation

Improving Drupal Performance and Speed on Leland Servers

Posted by: 
Topics: 

Drupal performance on the Leland (WWW/AFS) servers can sometimes be sluggish, but there are several things that a site administrator can do to speed it up. A few of the standard Drupal performance enhancements (memcache, Varnish, Squid, etc.) won't work in the Leland environment; the tips listed below will.

See also:

Caching and Compression

At admin/settings/performance, try the following settings:

  • Caching mode: enabled
  • Minimum cache lifetime: 1 hour
  • Page compression: enabled
  • Block compression: enabled
  • Optimize CSS and Javascript files: both enabled

Caching only applies to anonymous users, but the CSS/JS optimization should help performance for both authenticated and anonymous users.

(Note: some of these options are not available in Drupal 5.)

Views and Panels Caching

You can speed up the performance of individual Views by enabling caching. On the edit View screen, click the None hyperlink next to the Caching option.

 None link

Choose Time-based for the type and click Update.

screenshot of Views admin screen showing time-based caching option

Choose a duration for caching the queries and the rendered HTML output. For Views that have content changing more often, you would set a shorter duration. The default of 1 hour is usually fine. Click Update.

screenshot of Views admin screen showing caching duration options

Your View should now show Caching: 1 hour/1 hour.

 1hour setting

Remember to save your View!

The Panels module also provide its own mechanisms for controlling the caching of the HTML output it creates. This article provides an overview of how to configure Views and Panels caching for Drupal 6; Drupal 7 setup is similar.

Statistics Module

Disable the core Statistics module. It causes database bloat and there are other, more sophisticated ways (AWStats, Google Analytics, Piwik) to gather site statistics.

Validate Your Code

Submit your site to the W3C validator. Browsers will render a valid (X)HTML page much faster than one with many validation errors. WYSIWYG editors are common sources of validation errors; this can be addressed by tweaking the WYSIWYG editor settings, or changing your doctype in your theme's page.tpl.php from XHMTL Strict or Transitional to HTML 4.01.

DB Maintenance Module

Install the DB Maintenance module. Go to PHPMyAdmin and look for all the tables with an entry in the Overhead column. Go to admin/settings/db_maintenance and select all of those tables, and the DB maintenance module will optimize them.

Screenshot of the overhead column in PHPMyAdmin

Disable Unused Modules

If a module is not actively being used to drive your site, disable it. Each active module contributes to Drupal's PHP memory footprint. An example might be the Node Clone module, or the Views UI module. Each of these is usually only needed when developing a site, and can be disabled for day-to-day use.

Export Views and Panels to Code

Using a custom module, you can load Views and Panels from code, rather than from the database, speeding up the load time of your Views/Panels.

Gzip/Deflate Components

Add the following code to your drupal/.htaccess file:

<IfModule mod_deflate.c>
  AddOutputFilterByType DEFLATE text/* application/javascript application/x-javascript application/rss+xml application/xml
</IfModule>

Private vs. Public File Handling

At admin/settings/file-system, set this setting to Public, unless you need to manage permissions and access to files. If set to Private, every request for a file (image files, css files, javascript files, etc.) gets passed through Drupal's index.php, which can make a site incredibly slow. Public file handling should improve performance for both anonymous (i.e., non-authenticated) and authenticated users.

Note: Changing to public download requires making changes to your .htaccess file in your files directory.

Set Expires Headers

You can tell the client's browser how long you think it should keep certain types files in the browser cache via mod_expires. This speeds up subsequent page loads by reducing the number of HTTP requests, as well as the total document size delivered over the network.

Add the following lines to your .htacess file:

# Set expires headers for images
ExpiresActive On
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"

Useful Tools