logo

Personal tools
Vasudeva
Navigation
About our blog
/images/easyblog_50.jpg
Our issue tracker
/images/jira_button_jpg

Atlassian supports our efforts by contributing their bug tracking and issue tracking application, JIRA. There are a few very nice Zope and Plone based ticketing systems, but we have still to find a better bug tracking and issue tracking application than JIRA, developed in any platform.

 
Document Actions

Welcome to Vasudevaservice.com

The Vasudeva Service project develops open source applications for the Plone and Drupal content management system. Here is our recent blog about using and working with Plone, Zope, Python, Drupal, Wordpress, PHP and UNIX....

Show all Draft Posts Plugin for Wordpress MU
| Posted by Shane Magee | Permanent Link | Comments: 1 | Programming |

This plugin will show the draft posts created in all your WPMU blogs. To activate, just download the PHP file and put it in your wp-content/mu-plugins folder. The file can be downloaded here....

To view all posts, click on 'Site Admin' and then on the 'Posts for moderation' submenu.

To do: make 'view' and 'edit' links, a bit like the Wordpress 'manage' interface actually. In any case, it's probably best if each theme you supply has an 'Edit this post' link, so the moderator can first view the post and then edit it if necessary without going back to admin screen.

Use cases for the JW Media Player
| Posted by Shane Magee | Permanent Link | Comments: 1 | Documentation |

Playing an album list


<embed
src="http://www.srichinmoy.tv/c_/player/mediaplayer.swf"
width="300" height="380"
allowscriptaccess="always"
allowfullscreen="true"
flashvars="height=380&width=300&displayheight=0&showstop=true
&showicons=false&repeat=list&backcolor=0xCCCCFF
&frontcolor=0x000066&lightcolor=0x3333FF&screencolor=0x6666FF&thumbsinplaylist=false
&file=http://www.radiosrichinmoy.org/c_/audio/radio/102/playlist-102.xml"
>

gives you

As you can see, the playlist is stored in the same filesystem location as the music files (see sample playlist here).

The flashvars set all the tweakable aspects - color, positioning ect. You can view all available flashvars here on Jeroen Wijering's site, and there is also a setup wizard where you can throw in various combinations and see how the code turns out



Playing a video - with youtube-like recommendations!


<embed
src="http://www.srichinmoy.tv/c_/player/mediaplayer.swf"
width="300"
height="220"
allowscriptaccess="always"
allowfullscreen="true"
flashvars="height=220&width=300
&file=http://www.srichinmoy.tv/c_/video/tv/260/260-1-2.mp4
&showicons=false&image=http://www.srichinmoy.tv/images/tv/260-1.jpg
&displayheight=200&searchbar=false
&recommendations=http://www.srichinmoy.tv/c_/player/recommendations/rec-lifevoices.xml"
/>
gives

When the video is finished, a list of recommended videos are displayed. Just like the playlists above, the recommendations are also generated from an xml file (see sample).

Note:
  • The front preview image and the recommendation images already exist on the site. The Flash Player allows them to be jpgs instead of having to convert to mp4
  • Again, the colour of the controlbar at the bottom can be modified by playing with the flashvars
  • The controlbar is on the bottom because we set the displayheight 20px less than the height. If they are the same there is a nicer effect where the controlbar is inline, but then it gets in the way of the recommendations if you want to include them


Custom playlist from different albums



<embed
src="http://www.srichinmoy.tv/c_/player/mediaplayer.swf"
width="300" height="200"
allowscriptaccess="always"
allowfullscreen="true"
flashvars="height=200&width=300&displayheight=0&showstop=true
&showicons=false&repeat=list&backcolor=0xCCCCFF
&frontcolor=0x000066&lightcolor=0x3333FF&screencolor=0x6666FF&thumbsinplaylist=true
&file=http://www.radiosrichinmoy.org/c_/audio/custom_playlists/playlist1.xml"
>

gives you

Here is the link to this playlist - note how we now have a 'creator' and 'album' tag added. We have also switched the thumbsinplaylist flashvar to true to include creator




Custom TV playlist



<embed
src="http://www.srichinmoy.tv/c_/player/mediaplayer.swf"
width="300" height="400"
allowscriptaccess="always"
allowfullscreen="true"
flashvars="height=400&width=300&displayheight=200&showstop=true
&showicons=true&repeat=list&backcolor=0xCCCCFF
&frontcolor=0x000066&lightcolor=0x3333FF&screencolor=0x6666FF&thumbsinplaylist=true
&file=http://www.srichinmoy.tv/c_/custom_playlists/playlist1.xml"
>

gives you

Here is the link to this playlist - the 'image tag allows images to be displayed in listing, I just used images already on site.



Thanks to Jeroen Wijering for creating such a great player

Meditation for Tech Guys
| Posted by Tejvan Pettinger | Permanent Link | Comments: 4 | General |
med

Meditation for Techies.

Google Analytics
| Posted by Tejvan Pettinger | Permanent Link | Comments: 0 | Blogging |

There are many statistics programmes which track web visitors. Google analytics is one of the best free statistics programmes.

To add Google analytics

  1. Visit Google analytics - you will be instructed to get a google account.
  2. Add your site and then add the code they give you into your web pages.

Blogger Template.

If you have a blogger (blogspot.domain). You would edit the blogger template and add the code.

More...
Embedding Quicktime videos with preview picture
| Posted by Shane Magee | Permanent Link | Comments: 0 | Documentation |

To embed a quicktime video, use the following code:

<object width="400" height="274">
<embed src="video.mp4" type="application/quicktime"
  wmode="transparent" width="400" height="274" autoplay="true">
</embed></object>

The autoplay argument determines whether the video plays or not immediately the page is loaded.

There are also other arguments you can add just like autoplay:

  • loop="true"/"false"— the movie plays once or continuously.
  • controller="true"/"false" — toggles the playback controls e.g. pause, fast forward, or mute.

The full range of options are available on the Apple Quicktime site:

http://www.apple.com/quicktime/tutorials/embed2.html


Preview Picture


With the above, what you get is basically a black box with a grey control bar below. Perhaps you would like to have a preview picture that loads the film when it is clicked on, just like Youtube embeds

The first thing you need to do is create the picture to be the same size as the video + 16px height to allow for the controllers. If you don't do this the image gets squeezed/expanded to fit the video screen.

Then you need to save your image as something quicktime can deal with (eg .mp4). For this you need Quicktime Pro (costs $30) or for Mac you can use QTAmateur, available here:

http://www.mikeash.com/?page=software/qtamateur/index.html

Open up your image with either of these and then click File -> Export, and save to MPEG-4 (mp4), I think .mov also works

You can then use this code to embed

 <object width="400" height="274">
<embed src="images/preview_image.mp4" href="video.mp4" target="myself"
  type="application/quicktime" wmode="transparent" width="400" height="274"
  autoplay="false"></embed></object>

where preview_image.mp4 is your created image and video.mp4 is your video

How To Set up A Blogger Blog
| Posted by Tejvan Pettinger | Permanent Link | Comments: 0 | Blogging |

It is fairly straightforward to set up a blogger blog. Just follow the instructions at:

http://www.blogger.com/home

  1. You will need to Create a google Account
  2. Then click on Create Blog.
  3. Give it a Title and choose domain e.g.

Title: "How to Grow Potatoes" Blog URL: howtogrowpotatoes.blogspot.com

  1. Choose A Theme.
  2. Your blog is created! http://www.howtogrowpotatoes.blogspot.com

To Use Your Own Domain Name

If you would prefer to have www.howtogrowpotatoes.com rather than http://www.howtogrowpotatoes.blogspot.com You need a few extra steps.

  1. Click on Settings.
  2. Click on Publishing
  3. Click on Switch to Custom Domain
  4. Buy A Domain with Google. They will then switch your blog to your new domain name.

  • You can do this at any stage, google will automatically redirect your old .blogspot domain
  • You can buy a domain name elsewhere, but you will need to switch cmod or something like that. That starts to get a little more complicated.
The fifth maintenance release of Plone 3.0 is out
| Posted by Priyadarshan Bontempi | Permanent Link | Comments: 0 | General, Plone |

Plone 3.0.5 came out on January 7, 2008.

Full release announcement

Keeping More Visitors
| Posted by Tejvan Pettinger | Permanent Link | Comments: 0 | Blogging |

I watched a fascinating video about how to keep visitors on your site for longer.

One thing that stood out is that web viewers get confused and bored with reading long lists. If you have a navigation bar with many items, people can't be bothered to read through it, so they leave the site.

If you make the navigation bar shorter, they are 25% more likely to click on something.

The optimal number of text blocks is 5-7.

This is a problem if you use Plone navigation bars - they can become very long and unwieldly

Compare these 2 examples of a navigation bar at Sri Chinmoy Poetry

Hopefully, you will find the navigation bar for happiness makes it easier for the eye to choose a page.

This fits neatly in with the principles of Don't Make Me Think

BTW, I like the principles of: USEit.com

Having paged comments in Wordpress
| Posted by Shane Magee | Permanent Link | Comments: 0 | Blogging |

If you have a very popular blog it might be worth dividing your comments into pages for easier viewing. Fortunately there is a Wordpress plugin called Paged Comments to do just that, thanks to Keyvan Minoukadeh. However it needs a bit of tweaking to work on your site.

Installing and configuring

  • Download and extract plugin files to a folder locally.
  • You can change the number of posts per page and some other useful settings by editing the paged-comments-config-sample.php file (its all fairly well explained in the file), then save the file as paged-comments-config.php.
  • Upload the whole paged-comments directory to /wp-content/plugins/ and enable the plugin through the WordPress admin interface.

Template hacking (yuck)

  • We need to include the comment 'pager' in our template. If you are using a common theme, it might already be taken care of: just go to /wp-content/plugins/paged-comments/themes, open your theme folder, and then copy the comments-paged.php file there into your theme folder at /wp-content/themes
  • If you are not using any of the themes listed in /wp-content/plugins/paged-comments/themes then go to your theme and copy the comments.php file to comments-paged.php

We will then modify the comments-paged.php as follows:

In the code at the start

<?php // Do not delete these lines
    if ('comments.php' == basename($_SERVER['SCRIPT_FILENAME']))
        die ('Please do not load this page directly. Thanks!');

change comments.php to comments-paged.php

To add the pager, place this code

  <!-- Comment page numbers -->
<?php if ($paged_comments->pager->num_pages() > 1): ?>
 <p class="comment-page-numbers"><?php _e("Pages:"); ?> <?php paged_comments_print_pages(); ?></p>
 <?php endif; ?>
 <!-- End comment page numbers -->

before the <ol class="commentlist"> line and again after the </ol> marking the end of it

If you want to make comment number visible on the blog, add this line of code

<div class="comment-number"><?php echo $comment_number; $comment_number += $comment_delta;?></div>

You can add it anywhere between <?php foreach ($comments as $comment) : ?> and <?php endforeach; / end for each comment / ?>, but the best place is probably before the author name (<cite><?php comment_author_link() ?></cite>). In practice, this hasn't worked too well for me, so use with caution.

Customising wordpress templates
| Posted by Shane Magee | Permanent Link | Comments: 0 | Blogging |

Here are a few nice things to add to your wordpress template in case it doesnt have them. The important templates to modify are index.php (the full blog view), single.php (shows single posts) and comments.php (for comments)

Show author and date

Adding the following :

<p>Posted by <?php the_author(); ?> on <?php the_date('F j, Y'); ?> at <?php the_time('g:i a'); ?>
</p>

will give something like

Posted by Tejvan Pettinger on October 12, 2007 at 7:35 am

The arguments for the the_date and the_time functions tell you what format the date and time is in, you can read a full list of them here...


Show category

<?php the_category(' , '); ?>

shows the category; the comma in the brackets tells you what separates the categories if there are more than one of them.


Edit post link

Very handy to be able to edit posts from the actual post itself:

<?php edit_post_link(__(' Edit this post')); ?>

The stuff between the apostrophes is the wording of the link

Migrating Blogger blogs to Wordpress, and setting up 301 redirects to ensure no links are broken
| Posted by Shane Magee | Permanent Link | Comments: 0 | Blogging, Documentation |
  1. Ok, basically if your blog is a new Blogger blog (after it was acquited by Google and Google usernames introduced) first step is to be sure have Wordpress 2.2.

If you have an old version of WP, you can always upgrade:

http://codex.wordpress.org/Upgrading_WordPress_Extended

Wordpress 2.1 allows you to upgrade from Old Blogger blogs, but not New ones.

  1. If your Blogger blog is hosted via FTP, go into the settings of the blogger blog and turn it into a blogspot blog (this change is reversible if anything goes wrong). Your blogger blog url will now be at (some name you choose).blogspot.com
  2. Go to your blog admin on your WP blog. Go to Manage -> Import and select the 'New Blogger' option. You will be asked for your blogspot url, blogger username and password. And hey presto, the job is done! (You might want to verify that before we go on)

Some recent users may have trouble signing into their Google account from Wordpress due to the fact that Blogger changed their hostname API:

http://wordpress.org/support/topic/131952?replies=2

As you can see here, you just need to make a simple change in wp-admin/import/blogger.php file, changing www2.blogger.com in line 84 to www.blogger.com. This will be automatically fixed in Wordpress 2.3.

  1. Ok, here is the time consuming job, setting up redirects from the old posts to the new, so that if someone clicks on a link to the old address they are automatically forwarded. Make sure you first are happy with the permalink structure on your WP blog (Go to Options -> Permalinks to change this)

Now open up some text editor to write the redirects. Suppose your old blogger blog was at

http://www.mysite.com/{old address}

and your new WP address is at

http://www.mysite.com/{new address}

basically all you do is type

redirect 301 /{old address} http://www.mysite.com/{new address}

301 is basically a code that tells Google that the item has permanently moved to the new address and you aren't trying to pull any funny stuff on them. For each entry, type in the proper 301 redirect on a separate line. You can still get the old url address by looking at the blogspot blog.

You need to type in the full URL of the new address. Why? Basically, it allows you to redirect your posts to entries on a completely different site if you so choose!

Now you need to use an FTP client to go into the filesystem of where you host your blog. At root there should be a file called .htaccess; if not, create one (all files with . in front are system files and might be hidden unless you tell your FTP client to show hidden files). Then just copy and paste your redirects into this file, save, and try it out by typing in an old blogger address

  1. I've heard (although i don't know the logic behind it) that its good to keep the FTP site going for a couple of days. So go to your Blogger blog and move it back to ftp, and then delete it after a few days.
vsCore, vsPloneLibrary, vsPloneSongs projects listed on ohloh.net
| Posted by Priyadarshan Bontempi | Permanent Link | Comments: 0 | Plone |

Our vsCore, vsPloneLibrary and vsPloneSongs, have been listed on http://www.ohloh.net.

vsPloneSongs

  • Home: This project doesn't have a home page.
  • Download: Download page is missing
Project: http://www.ohloh.net/projects/6718
Commits: http://www.ohloh.net/projects/6718/commits
Individual commits: http://www.ohloh.net/projects/6718/contributors

It even rates two of them as "Extremely well-commented source code" :D

Programs to help you build your website from scratch
| Posted by Shane Magee | Permanent Link | Comments: 0 | design, websites |

This is actually an email response I sent to a friend who was asking about this sort of thing. It kind of complements Richard's blog post below.


There are a number of programs out there to make the life of people designing websites much easier. Choosing the right one depends on what kind of website you want - so you need to ak yourself the following questions:

1. Are you designing a completely new site, or are you putting a new design to an already existing site?

2. Is your site big (greater than 30 pages) or small (less than 30 pages)

3. Do you see the site as a project that will take a finite amount of time (15-20 pages and then stop) or will it be an ongoing project and pages will be added as time goes on?

For small, finite sites we recommend using a very easy to use design program called Dreamweaver, which is expensive. There are also free equivalents of Dreamweaver which Richard mentioned in his blog post.

However, these programs can be a little inefficient if you want to add lots and lots of content very quickly - there are specialised programs called Content Management Systems that handle this much better - for example the Plone program used to manage content on this very site (there are also other programs like Wordpress (used primarily for personal sites and blogs), Alfresco and Drupal. The only problem is sites using Content Management Systems often start out looking not quite the way you envisioned them (and perhaps even a little ugly). With some technical expertise you can also make these sites as beautiful as Dreamwaever sites, but it will take longer to learn, especially if the people you have in mind to work on the project have no computer experience.

Evaluation of Blogger Software
| Posted by Tejvan Pettinger | Permanent Link | Comments: 0 | Blogging, websites |

If you are looking for a blog for your website, or just want a blog, the 2 most popular choices are: Wordpress and Blogger.

Advantages of Blogger

  • Owned by Google; the biggest blog software, and it is Free
  • Easy to install and add to your exiting website. At Blog set up choose - "Advanced Set UP". You will need your FTP password e.t.c.
  • Can also be used as a standalone and hosted on Blogger's servers, e.g. www.yoursite.blogspot.com
  • Easy to use and customise template.
  • Indexed very quickly by Google (not too surprising, since it is owned by Google. This is good for SEO
  • New features of www2.blogger include: blog labels. There are also hacks available, such as, teaser blog pages.
  • Google support group

Disadvantages of Blogger

  • With new blogger software hosted on external sites, I have frequently had blog publishing problems. (Sometimes takes a long time to publish, and then with errors - can be avoided by not having lables) Hopefully, these are problems which will be overcome soon, but it makes me reluctant to start more blogger blogs.
More...
Web Hosting
| Posted by Tejvan Pettinger | Permanent Link | Comments: 0 | Blogging, websites |

Finding a good, reliable web host is not easy.

It is important to bear in mind:

  1. How much traffic will your site have? - Most sites start off small, but if traffic increases, you may need an option with more bandwidth available. E.g. small packages may start from 2GB per month.
  2. Do you need optional extras? For example, wordpress blog.

Some Web Hosts worth Considering

  1. SiteGround - $6.00 per month.

Supports Wordpress, High Bandwidth and disc space capacity.


  1. Small Orange tiny packages from $25 per year.

Supports Wordpress and AWStats, Tiny package has small bandwidth, but can upgrade to higher bandwidth.


  1. Pow Web $6.00 per month

Supports Wordpress, AWStats, High Bandwidth.


  1. Heart Internet from $5.00 per month

Wordpress not available on cheap package, but is on more expensive.


  1. Streamline.net from $28 per year.

Cheap if you want unlimited bandwidth and disc space. Wordpress is supported, but need to install yourself.

HTML Editors
| Posted by Tejvan Pettinger | Permanent Link | Comments: 0 | websites |

If you are building a website from scratch you will want a HTML editor to help create webpages.

Some of the best HTML editors.

  1. Dreamweaver - The market Leader but quite expensive. Dreamweaver at Adobe
  2. Microsoft Front Page - One of the most popular editors, it is now being superceded by Microsoft Expression Available for trial download.

Free HTML Editors

  1. NVu - OPen source html editor How to build a website using NVu
  2. Mozilla Composer

These HTML editors will enable you to upload your webpages using FTP transfer. However for optimal FTP transfer you may wish to make use of a dedicated FTP programme.

Cute FTP


Cheap Hosting and Site wizard - cheap webhosting with editor built in.

Tidy language folders with LinguaPlone
| Posted by Shane Magee | Permanent Link | Comments: 0 | 3rd party Products |
bird

Photo: Projjwal Pohland .

In Linguaplone, the one thing that you can't translate is the portal itself. Hence if you have any documents or folders at site root, then they will be translated into documents or folders also at site root. It is easy to see how (especially with more than two languages) things can get very messy indeed.

However there is a way around this if you have your site address directed to a folder at the root of the portal, public_home, say (in my opinion this should be Plone default behaviour to stop user content from being scattered around portal tools in the zmi). You can then translate the folder and the translated folder will show up on the same level as public_home. (You can even translate some content inside the folder before you translate the folder and LinguaPlone will put the content inside the folder for you)

However, perhaps you want all content - including translations - to be inside the public_home folder for ease of maintenance. Well, after you translate the folder, you can go into the zmi, cut the folder and paste it within public_home. This doesn't seem to have any effect on the links between original and translated folders, or on any content translated after you move the folder, and you now have all the content for each language inside their respective folders inside public_home.

Displaying body text of a news item in sdotnews
| Posted by Shane Magee | Permanent Link | Comments: 0 | Plone, 3rd party Products |
http://www.srichinmoycentre.org/gallery/d/205411-2/P1030839.JPG

Who says a technical site can't have pictures? (Photo:Kedar Misani )


Sdotnews by default displays the description of a news item. However, sometimes you will want to link to another page direct from the front sdotnews page, so it might be better to display the body text instead of the description, and in the body text of the news item you can then insert your links.


In order to implement this change we have to change the sdotnews_view template; specifically, replacing the bit that says

<p tal:content="result/Description">

At first I tried to call the text of the page body using

<p tal:content="result/getText">

or

<p tal: content="python: result.CookedBody()">

But this doesn't work, because once sdot has batched the news articles in groups so they can be displayed on different pages, the page results can access the metadata listed in the catalog, (so result/Description or result/Title is ok, but result/getText isn't).

Now, to get around this, you can include the page body in the catalog metadata (which would defeat the whole purpose of having a catalog in the first place), or else you can use the getObject method to access the obkjct and all of its attributes, rather than just the ones specified in the catalog.

tal:define="resultObject result/getObject;
            resultText python:resultObject.CookedBody(stx_level=2);

 <p tal:replace="structure resultText">

Note that sdot news already has defined resultObject, which it needed to access the news item image. Also note the structure command, this converts the HTML or ReStructured text. If you just put in

<p tal:content="resultText">

you will just get all the HTML tags.

Adding images to a csv-table in restructured text
| Posted by John Gillespie | Permanent Link | Comments: 1 | reStructuredText |

Anyone who has tried to add images using the csv-table directive in restructured text may have come to the following conclusion: it can't be done. Well certainly not using any of the existing attributes or syntax for tables (an oversight?), but it can be done with the replacement directive.

Firstly, a csv-table in restructured text looks like this:

Currently Held Records
No Category Details Record Date Photo
1 Somersaulting Longest continuous distance 12 miles 390 yards Apr 1986 green_face.jpg

And would created with the following code:

.. csv-table:: Currently Held Records
  :header: "No", "Category", "Details", "Record", "Date", "Photo"
  :widths: 42, 270, 270, 220, 119, 119

  1, "**Somersaulting**", "Longest continuous distance", "12 miles 390 yards", "Apr 1986", |green_face.jpg|

Ignore the first three lines—it's the table structure info, similar to the way you would define an image, but instead defining table column titles and widths. Should be pretty obvious how to change anything there, but in case not, let's recap a few csv-table fundamentals, as it is important in restructed text that formatting is followed precisely—right down to the space and comma:

  • a single space after each comma—no other spaces
  • bold text like **this**
  • all text inside "quote marks"
  • numbers don't need to be in quote marks, unless together with text: "12 miles 390 yards"
  • return at the end of the line

The last line is an example of a row of the table, and more importantly contains the image:

1, "**Somersaulting**", "Longest continuous distance", "12 miles 390 yards", "Apr 1986", |green_face.jpg|

The image is the complex, for “|green_face.jpg|” (without quotes) is actually a “replacement” for the image definition, somewhat akin to an ID in css or a variable in pretty much any programming language you could name.

The image url, link and any other image parametres pointed to by the replacement id then get defined below the table (ie at the bottom of your reSt document):

.. |green_face.jpg| image:: green_face.jpg
  :target: green_face.jpg

Note:

  • The spaces are important as usual, as is putting the info on two lines
  • the name of the replacement/id can be anything, but it makes sense to me to use the image name
  • you can use the same image two times (or more) but only define the replacement once.

Example

You can view an example of a resturctured text csv-table including images here: Ashrita.com

Tips for faster speed in Plone
| Posted by Shane Magee | Permanent Link | Comments: 1 | Plone |

Plone, like any content management system, has slower page load speeds than static pages. Ensuring a fast enough page load speed so users won't get turned off is therefore a big concern of Plone site maintainers. Here are some tips:


1. Avoid missing page components


If a part of a page (most commonly an image) returns a 404 or 301, it can slow down the page to more than half the speed. No matter what one does on system level you cannot make up for that kind of speed loss.

301 errors are particularly tricky since it is basically a bad link, but some code (most probably RedirectionTool) finds the requested object somewhere else and redirects the original request to the correct url. The url is served correctly, but that 301 makes the page load slow.

Actually the standard use of RedirectionTool (aliases) has the same effect, so it should be used just temporarily.

The Tamper Data extension (https://addons.mozilla.org/firefox/966/) to Firefox is a great tool because it allows you to quickly inspect headers of all the page components, not only the page itself. After installation, you will be requested to close the browser completely and start it again. Now Open Tamper Data from Tools menu in Firefox, and open a page you want to check out in Firefox. You can now see that Tamper Data window is being populated. Each line is one individual component of the requested page that has to be loaded in order to render the page. The most important column for us is "Status". We are looking for 404 and 301 errors. 200 means you accessed site content without error and 304 means your local content is the same as in the squid, which is even better.


2. Page content - sometimes less is more


A page with twice as much content will most probably load two times slowly. Understandably that we want put as much possible into every page, but quite often less is more. Things that have to be generated by Zope (smart folders ect) will obviously take longer to load than static content


3. Caching


Most speed improvement on a system level involves caching - storing site content in easily accessible areas. Most large sites run a proxy cache like squid to serve up static content and keep Zope from doing the work. Other static content is cached in the browser itself. The most import thing is to make sure all pages and their components have correct caching headers; this is done by the CacheFu product, which now ships with Plone.

The whole plone caching business is described in http://plone.org/events/regional/nola06/collateral/make-plone-go-fast.pdf and CacheFu product documentation.

Obviously, any caching issue we fix has a double effect. The page is served from cache much faster and it does not create any load on zope server. Then the pages that have to be served by zope (cache refresh, editors) are much faster.

Another crucial point is to evaluate any new feature or product we are going to use from the caching and performance perspectives. Then we should document what adjustments have to be done when a product or a feature is deployed on a particular site. For instance if EasyBlog is installed on a site, the CacheFu will have to be set; if sdot is installed, the CacheFu will have to be set and icon image will have to be created, etc.

(Thanks to Atmasamarpan for all his help with this article)

page created by Tejvan Pettinger last modified 2007-10-23 06:16