Chris Pollett > Students >
Ramya

    ( Print View )

    [Bio]

    [Project Blog]

    [CS297 Proposal]

    [Deliverable 1]

    [Deliverable 2]

    [Deliverable 3]

    [Deliverable 4]

    [CS297 Report - PDF]

    [CS298 Proposal]

    [CS298 Report - PDF]

    [CS298 Presentation - PDF]

    [Download Project]

    [Installation guide]

                          

























CS298 Proposal

Client-side Page Element Web Caching

Ramya Karri (karri.ramya@gmail.com)

Advisor: Dr. Chris Pollett

Committee Members: Dr. Soon Tee Teoh (teoh@cs.sjsu.edu) and Dr. Tsau Young Lin (tylin@cs.sjsu.edu)

Abstract:

When a user explores different web pages in a given website, the website typically sends the entire requested page even if only a portion of the page was different to the current page. That is, two pages on a given website might share elements on the page like search bar, left bar, navigation controls, advertisements, etc., but this information is retransmitted. According to current statistics [Yahoo08], 80% of end-user response time is spent on the front-end while downloading all the components in the page such as images, style sheets, scripts, Flash, etc. Nowadays, server-side caching of page elements is often done using tools like memcached. The aim of my project is to explore the element, web page caching on the client-side. That is, our goal is to develop a system that caches the most common html parts of web pages in the website and reuses them in the further web pages reducing the transmission data. This effect probably is currently attainable using frames or object tags; however, the actual UI meaning of these tags is different that one integrated HTML file and so could cause usability issues, therefore, we want to explore solutions which are transparent to the end user -- the solution must behave just like a single fixed web page. In order to explore the advantage of having client-side caching and determine the effect on the response time, we might have to make our server set-up as realistic as possible. So Squid, a front-end load balance, memcached, etc., will be used when we test our client-side caching.

CS297 Results

  • Learned PHP and CakePHP which is one of the main scripting languages and framework used to implement this project.
  • Configured Squid to perform load balancing between two servers.
  • Determined the advantage of caching portions of textual content in a web page.
  • Researched and understood the various caching techniques of the Firefox browser, which will be the main browser used to request the web pages in this project.

Proposed Schedule

Week 1 (27 Jan,2009 - 3 Feb,2009) Prepare CS298 proposal
Week 2-4 (3 Feb,2009 - 24 Feb,2009) Develop extensions to CakePHP renderElement function
Week 5-6(24 Feb,2009 - 10 Mar,2009) Test the transparency of the web pages
Week 7 (10 Mar,2009 - 17 Mar,2009) Develop a script that test the client-side browser
Week 8 (17 Mar,2009 - 24 Mar,2009) Deliverable 1 - Working cache system due
Week 9-10 (24 Mar,2009 - 7 Apr, 2009) Work on Deliverable 2 - Experiment to test the caching technique
Week 11 (7 Apr, 2009 - 14 Apr, 2009) Test the various scenarios and record the total download times of the web pages
Week 12 (14 Apr,2009 - 21 Apr, 2009) Deliverable 2 - Test the caching technique due
Week 13 (21 Apr,2009 - 28 Apr, 2009) Prepare CS298 final report
Week 14 (28 Mar,2009 - 5 May, 2009) Complete draft report for committee review; prepare project presentation slides
Week 15 (5 May,2009 - 13 May, 2009) Defense in front of committee

Key Deliverables:

  • Software
    • Deliverable_1: Developing a working caching system. This deliverable is divided into following sub-deliverables.
      • Develop extensions to CakePHP renderElement function so that the application developers will be able code the html pages without learning about the underlying caching system.
      • The web pages will appear very transparent to the end user i.e. the underlying caching technique will not delay the display of the components in the web page and the downloading will seem identical to the display technique currently being used.
      • Javascript will be used to get the contents from the cache and replace them in the html elements, so it is important, before we execute our Javascript functions, to check whether a particular object or method is supported by the reader's browser. I will develop a server-side script that checks to see if the client-side browsers Javascript is on or off.
    • Deliverable_2: Experiment to test the caching system. This deliverable mainly includes testing how the developed caching technique works and recording the total download time taken by the web pages under different scenarios. Below are few scenarios that will be considered;
      • Test with plain website
      • Test with client-side browsers Javascript on
      • Test with client-side browsers Javascript off
      • Test with website, which has web pages sharing many elements
      • Test with website, which has web pages sharing few elements
      • Test with having server-side cache
      The total download time of the pages will be measured using YSlow, which is an extension to the Firefox plug-in. The total download time of the pages which uses cache will be compared with pages which do not use the cache and the reduction in the response time will be measured.
  • Report
    • Final report consisting the detailed description of software used, algorithms implemented, design patterns used in the project will be delivered. The report will also contain the prior work done in this field, and how this project is innovative and different than the work that is already done. It will also include detailed explanation of all the experiments conducted and the results produced.

Innovations and Challenges

  • Developing a new form of caching technique that finds the common parts of the website and caches them at the client-side.
  • Understanding how much reduction in response time has been obtained.

References:

[Cevasco06] Cevasco, F. (2006). The CakePHP Framework: Your First Bite. Retrieved July 12, 2006, from http://www.sitepoint.com/article/application-development-cakephp

[Hawes00] Hawes, M.K. (2000). U.S. Patent No. 6,094,662. Washington, D.C.: U.S. Patent and Trademark Office. It provides an apparatus and method for loading and reloading HTML pages having cacheable and non-cacheable portions.

[smp07] Using Client-Side Cache Solutions And Server-Side Caching Configurations To Improve Internet Performance. Retrieved December 02, 2008, from http://newestindustry.org/2006/10/03/using-client-side-cache-solutions-and-server-side-caching-configurations-to-improve-internet-performance/

[Visolve02] Visolve Squid Team (2002). Implementing reverse proxy using squid. Retrieved October 14, 2008, from http://www.visolve.com/squid/whitepapers/reverseproxy.php

[Yahoo08] Best Practices for Speeding Up Your Web Site. Retrieved from http://developer.yahoo.com/performance/rules.html