هذا نص مقالة نشرتها في موقع دروبال وتتضمن دراسة تقنية عن إنجاز موقع الجمل
Aljaml.com is one of the oldest Arabic Drupal news sites. It started back in 2005 using a forked version of Drupal 4.6, optimized for performance and for supporting Arabic content. During the past 6 years, the publishers and their community were very happy with the dazzling speed, the stability and security of their portal. Recently, the Site’s audience demanded a modern interface with sharing and social bookmarking features. The management did not want to sacrifice their reputation as the fastest Arabic news site, so they made the strategic decision to stay on Drupal, and they contracted us at EGHNA.
The migration process
The first challenge was the migration of 60K nodes to Drupal 6. Version migrations with the Drupal upgrade scripts produced some errors, possibly because of the changes in the original database. So we decided to create a custom database upgrade script to import content into the new Drupal 6 database. Later on, this same script was used to automatically pull data from the live site and push it into the new site during the beta and parallel operation phase.
The migration process included converting nodes created with the old image module into the new CCK and Image field architecture.
After migrating the data, existing content needed to be tagged with the new taxonomy terms, the autotag module was a great help, although it did not complete the task in some runs due to some unknown reasons.
The new features
- The audience requested improved social bookmarking, and this was created using a custom hook_link in a special module designed only for this task.
- Geo Tagging: putting content in the geographical context was a project priority, and this was done using geotaxonomy, openlayers, and views. The custom style was implemented by adding a custom php field to the map’s source view. This field calculated the width of the marker circle based on a simple algorithm, and then used in creating the map’s style.
- Content recommendation: on each node, the aljaml.com displays a collection of suggested nodes, each of 3 nodes, chosen by taxonomy, without repeating any node more than once. This was done by a custom node_suggestions module created especially for the project.
- Improved interface: The new interface was implemented using Panels, Quicktabs, and views slideshow. The new theme was created from scratch to remove each and every unnecessary bit.
- Personal user bookmarks: A standard feature offered by the flag module.
- Improved back office: Aljaml.com team now uses the wysiwyg module to edit content, and the tagging widget to tag it. The flags module was very helpful in creating grouping of nodes for different display scenarios.
Focus on Performance Optimization
As most of the site readers still use dial up and low speed connections, performance was the most serious challenge. The new site has been up for a week by now, and some users already complained about a few things, but we did not hear any single complaint about performance. Here is how we did it:
- No useless code: If we needed a bit of functionality, we implemented it in custom coding, so we did not include modules for small features that could take some extra processing resources. We can say that most of the enabled code is being utilized in the site.
- Used pathauto for SEO, ONLY: Pathauto generated urlencoded Arabic nodes urls. The urls were really long and ugly, and they affect the weight of a home page where most of the content is just links to other nodes. We looked at each view and converted the node link into the hardcoded “node/[nid]” value. This way we reduced the processing load because Drupal does not need to fetch the alias of every node before displaying its link, and reduced the size of the home page considerably.
- Use browser built-in features: Although the marquee does not validate on the W3C validator, we used it because it is supported by all browsers. We also used a stylesheet for printing, so users can just print the pages from their browsers, without the need for a special module and processing to produce printer friendly pages.
- Use parallel downloading: The parallel module was a great help, out of the box.
Focus on compatibility
A considerable part of the website visitors still use IE6, and the new site has to stay compatible with IE6, therefore, we avoided transparent PNGs, and tested the site extensively using virtual machines running IE6 and IE7 on windows XP.
At first we tried designing a theme with less features compatible with IE6, but this did not work in the real world, because both Drupal and user proxies used to cache pages, and we ended up in a real chaos of user complaints. So we learnt a good lesson: theme switching is not a suitable solution for backward compatibility.
We tried redesigning the theme to focus on compatibility, and it worked. Now we serve the same page to each and every user, and we used Microsoft’s suggested best practices to provide custom fixes for IE6 and IE7.
We have seen an immediate jump in visits and user engagements, hits and files count for the domain have decreased, because we are serving assets from a different domain, but the number of visitors and page view has increased 13% simply after launching the new site, without any special media coverage. Most of the new users came from search engines and social networks.
Yahoo page slow produced an amazing Grade A, with a score of 94 on the V2 ruleset, and score of 100 on the small site/Blog ruleset.
Reducing the home page size has paid back, and we could serve this entire home page using only 255.7KB, this includes the flash ad. The html size of the page is only 9.6KB.
The server performance is also affected, and currently, at the peak hour, the server reported the very low CPU load and RAM allocation.
CPU load averages: 0.16 (1 min) 0.19 (5 mins) 0.21 (15 mins)
CPU usage: 9% user, 1% kernel, 0% IO, 89% idle
Real memory: 1.97 GB total, 256.16 MB used
Best Practices for Similar projects:
- Plan for a parallel/shadow operations phase, you will certainly need it, and what works in the lab might not work in the wild.
- Design for compatibility from the ground up.
- Minor details matter. Take care of everything and that will reflect on your user’s experience, server’s performance, and on your rankings.
We help customers align their technology to their business goals, and we specialize in Drupal and VTiger consulting, please contact us atwww.eghna.com