This essay has been submitted by a student. This is not an example of the work written by our professional essay writers.
Now a todays internet plays a very important role in our daily activities in office, home where ever we are. In fact, world has now become a global village. Considered the internet as a world without limitations, everyone can share and communicate their knowledge, message, and business and even buy or sell anything while sitting at home. Today many companies and organizations running their business on web sites like online shopping, web banking etc. Number of web sites are increasing on daily basis. On the other hand internet users expect the best performance from web sites like fast response time, high availability, reliability and accuracy. It's a challenge for the web developers and web site developing companies.
1Kashif Yasin: Computer Science and Engineering Department, University of Engineering & Technology Lahore. E-mail: firstname.lastname@example.org
2Waqas Butt: Computer Science and Engineering Department, University of Engineering & Technology Lahore. E-mail: email@example.com
To meet the web user's expectations we need to test the web sites with different performance testing types using different automated tools. It ensures web response to user's requests under different user load. Also ensure the future security gaps of system, reliability and efficiency in the web site implementation. The objective of performance testing by simulating the true load is to identify performance issues, bottlenecks and to enhance the web performance. Performance testing need some indicators on the basis of these indicators the automated tools test the web application and produce the results. Then on the basis of these results we take decisions for the enhancement of web applications. In this paper we have a web performance section where we have discussed the web performance in detail.
To enhance the web performance we need to follow the best web development techniques to meet the web user's requirements and expectations. In development techniques we have different areas which require improvement. In this paper,
We have discussed the different web development techniques to enhance the web performance. These techniques are applicable at different levels of any web application. The levels are web development/implementation (coding), database development (coding), web server (IIS/Apache) settings web server operating system, web server hardware specifications and internet network.
After studying the different research papers, we have found a lot of web performance related issues and their remedies. This research paper is the review of the already done research on web performance and enhancement techniques.
On the web performance a lot work has already been done like web performance testing, testing types, indicators of performance measurement, tools and technologies available for performance testing .
For the enhancement of web performance different techniques and methodologies have already been suggested and implemented in different web. We have also studied the most successful web site research papers like Olympic Games web site. This web site has been registered in guineas book of world records due its best performances .
We have reviewed the research paper, techniques discussed in that paper. After reviewing that paper we have found a lot of important key areas for the web performance and web enhancement techniques.
Similarly, on web development and database development a lot of research has already been placed. Like latest techniques to minimize the web page round trip or response time/wait time. The techniques includes java scripting, Ajax, Jquery, Json, threading etc. On database, query optimization, usage of stored procedures and indexing on database tables for fast retrieval or searching    .
On the other hand, web and database servers' are also the important key factors in the web performance and web enhancement. Research on the servers has also been done. We have reviewed a lot of papers on the server's enhancement like server hardware up gradation and load balancing clustering to cater the web performance related challenges .
According to the research papers if we develop web sites on the latest web performance bench marks then we can obtain the users demands i.e.; web sites minimum response time and high availability.
Web performance Testing Types
The web performance testing types section describes the testing types. Web Performance testing generally can be divided into three types. The types are:
It is done by gradually increasing the load on the web and database servers, test the changes in web performance, and finally determine the web performance under any load conditions in a failure state, and thus to get the system can provide the greatest level of service tests.
Stress tests examine the current web and database server's hardware and web application software environment the system can withstand the maximum load and to help identify system issues and bottlenecks .
It is done by gradually increasing the load, testing the changes in web performance, and finally determines the maximum load test the system can withstand, in meeting the web performance indicators. Load testing is usually to describe a specific type of stress testing - to increase the number of users to stress test the application .
Load test begins actually from the relatively small and gradually increasing the number of simulated users until the application response time overtime that is the load test. Load testing and stress testing may be in conjunction .
It is a longer interval load test or stress test. Unlike other tests is that the weight-bearing or tension testing interval of only tens of seconds to maintain the strength test should be delayed a few hours or even days. Strength testing often founds some inexplicable errors. For example, memory leaks, that is, memories, rollback segments exist in the database transaction were not submitted .
web Performance indicators for testing:
The performance measures on the basis of some metrics or indicators. The most important performance metrics are
System Resource Utilization
Number of Concurrent Users
HTTP Transactions / sec
Number of Sessions / sec
Network Traffic Statistics
Resource Request Queue Length etc.
But in this paper we have discussed the first three indicators.
Response time is also known as the waiting time from the user point of view. It is from the web user sends a request to web server the server's response to the delay experienced by web user, usually measured in time units. In general, it is as the low-level user load increases slowly increasing, but once the system of one or a few resources have been exhausted, waiting time will be rapidly increased. Figure 1 show the response time with the relationship between the user loads .
E:\Study\UET\Semester 4\Web Engineering\Final Review Paper\Material\Final Review Paper\Images\Response Time.png Figure 1 - Response Time and User Load
Throughput refers to the number of user requests that system handled within a particular unit of time .Commonly used unit is the number of requests / second, or the number of pages / sec. Figure 2 shows the throughput with the user load between the typical characteristic curves .
E:\Study\UET\Semester 4\Web Engineering\Final Review Paper\Material\Final Review Paper\Images\Throughput.png
Figure 2 - Throughput and User Load
Utilization refers to the systematic usage of different resources, such as the server's CPU, memory, network bandwidth and so on. It is often used to account for the largest amount of resources, measured as a percentage. Figure 3 shows the resource utilization with the relationship between the characteristics of the user load .
E:\Study\UET\Semester 4\Web Engineering\Final Review Paper\Material\Final Review Paper\Images\Utilization.png
Figure 3 - Utilization and User Load
Web Performance Testing Methodologies
For different application types and focus, there are mainly three kinds of Web Performance Testing Methods at present:
In this methodology we do the following steps
Simulate the behavior of real users
Application to test is called application under test (AUT)
Apply load on AUT
Then measure the performance of AUT index value like the transaction response time, server throughput and resource utilization. .
In this methodology, we use the concept based on the website usage signature (WUS). We do the following steps:
Design the test scenarios,
Emphasize on the establishment of true load.
The WUS is based on the parameters
Number of pages viewed per hour / clicks,
average visit duration, each visits average number of pages viewed / clicks
These parameter values can be obtained from the log file.
Frequently accessed path is as constituent units of the load .
In this methodology, we use the idea that is
AUT can be broken down into testable objects.
Objects can be links, command buttons, list boxes, messages, images, and downloadable files, audio.
Object-definition depends on the application simplicity and complexity.
A Web page can use objects to recursion, performance, thus becomes the process of testing each object or a collection of some objects, these objects act as the load of the constituent units.
The method by AUT decomposed into objects, so that test structure, a high degree of reusability is good, the results clearly, the page component type for rich, complex business applications; but too much emphasis on the performance of local components is difficult to reflect user's actual experience to the performance .
web performance Testing Tools
The available tools for web performance measurement in the market are discussed in this section.
Web Load Professional
To distribute load generation on multiple servers is yet another important feature of load testing tools. Most load testing tools work on the concept which is illustrated in Figure 4 below, and it is based on two architectural components: controller and agent .
E:\Study\UET\Semester 4\Web Engineering\Final Review Paper\Material\Final Review Paper\Images\Load_Testing_Concept.png
Figure 4 - Load Testing Tools Typical Architecture
Load Runner automated performance testing tool into our model, which has 
Easy to operate
Load Runner occupies the largest market share in the performance testing market worldwide,
It supports common standards and development techniques in the field of software.
E:\Study\UET\Semester 4\Web Engineering\Final Review Paper\Material\Final Review Paper\Images\Architecture_Load_Runner.png
Figure 5 - Load Runner Architecture
JMeter is an 
Open source Java application from the Apache Software Foundation
Designed to load test functional behavior and measure performance.
The JMeter is used to test performance both on static and dynamic resources.
JMeter is free
Extensible tool with community support.
JMeter has distributed testing feature.
The Grinder is another 
Free open source
To test load, functional behavior and measure performance.
Grinder scripts are written in Python programming language.
The Grinder is a Java load-testing framework using a graphical console application.
One of the Grinder's key features is generic approach which allows load testing of anything that has a Java API.
This includes common cases such as HTTP web servers, SOAP and REST web services, and distributed components and communication protocols (such as CORBA, RMI, JMS, EJBs), as well as custom protocols.
For testing HTTP services the HTTP Plug-in is used.
Web Load Professional
WebLoad Professional is 
RadView's commercial software for performance testing of Internet applications.
Built-in support for AJAX technologies, JSON data types and different types of SOAP and XML Web services.
It enables the generation of unlimited load that can be distributed over both Windows and Linux machines.
Its parameterization capability can turn static user sessions into dynamic sessions.
WebLoad Professional has comprehensive reporting.
Neo Load is 
A commercial load and stress testing tool
Used to measure the performance of the web application and
Provide pragmatic solutions facilitating design and development of the optimized website.
The NeoLoad is owned, maintained and developed by a French company called Neotys.
NeoLoad provides monitoring of the user response times and infrastructure's statistics.
It is compatible with most Web servers and application servers,
Can be run on most of the operating systems.
web performance enhancement techniques
Web server response time is too long for many reasons. So, we need to analyze some of the other areas other than performance testing tools. In analysis, we analyze the web, database development techniques and hardware servers as well. In web development we need to identify the areas where we need more improvements. Similarly, on the database development need more optimizations. Also we need to analyze the web and database servers at hardware level whether these servers need to upgrade so our web performance enhance to some extent .
Web applications should be designed to minimize server side round trips, which results in reducing response time or wait time. Also use the best coding techniques for server side scripting to utilize the maximum resources of web server. Some of the major techniques are discussed below:
E:\Study\UET\Semester 4\Web Engineering\Final Review Paper\Material\Final Review Paper\Images\Ajax_Model.png
Figure 6 - Ajax Processing Flow
Use the threads on server side scripting for the maximum utilization of server resources like CPU time. On the other hand keep it mind the threads also creates the bottlenecks in the application as well .
Caching is also another technique to minimize the response time. Caching can be done on the client side and server side as well. When we first time cache the data on the client side then next time there is no need to fetch the data from server. Similarly we can cache the data on server side to minimize the database hits. The cache data can be used to serve the web application users with minimum wait time. Similarly we can use polling concept on server side components. Below is the figure 7 which describes the caching mechanism on server side   .
E:\Study\UET\Semester 4\Web Engineering\Final Review Paper\Material\Final Review Paper\Images\WebServer_Caching.png
Figure 7 - Caching Mechanism
Database is also important to enhance the web performance. When we request a web page which holds some data from database. Then in this scenario the web application first establishes the connection with database server, fetch the data and then display it on the web page. So, at database level we can enhance the performance which overall impact the web performance. Some database level techniques are discussed below:
Optimize the queries which fetch the data from the database. Optimize the queries which perform DML operations on the database. Query optimization also helps us in web performance enhancement .
Use the stored procedures instead of embedded queries in code. Stored procedures are better in response time. Also use optimized queries in the stored procedures .
Create indexes on the tables in the database which are more frequently used in the web applications. Like in web reports we have filtration criteria date rage. So, create indexes on these columns to optimize the query searching. It also helps us in enhancing the web performance .
Web App Server
In order to enhance the web application performance, you can upgrade the web server hardware. If not enough system resources to become a bottleneck, the use of multi-server as a cluster can ease the load on a single server so that it can improve the performance of the system, thereby reducing application response time.
Upgrade your web server hardware like hard drive, RAM, CPU etc. to meet the performance requirements .
Load Balancing - Clustering
To deal with heavy traffic loads, web sites must use load balancing or in other words clustering. The web users request automatically routed to different servers in the cluster. The request is forwarded to web servers by router. The router decides which web server is free or having minimum load then request forwarded to that web server. Below is the figure 8, which describes the load balancing clustering mechanism .
E:\Study\UET\Semester 4\Web Engineering\Final Review Paper\Material\Final Review Paper\Images\Routing_Clustering.png
Figure 8 - Load Balancing (Clustering)
Web Database Server
If your database server and application server are on the same server then first deploy these both on separate machines to enhance the web performance. If you have already separate servers and still facing performance issues at database then upgrade your database server machine hardware .
The web applications processing always involve many levels (Operating system, Java virtual machine, Web server, Database server, application itself). Each level can produce its own log related to current stage, event and history. On each level keep track of time spent on logging. If you do not need the logging on any level then you can off that logging. On the other hand if you are using the logging for example at application level and it takes time in logging. Then in this case you have to optimize the logging process to enhance the web performance .
Proposed Solution/ Future work
After the complete review of all the research papers mentioned in the references section. We concluded that still we have problem, issues and bottlenecks in our web applications. And web users are still demanding more from the web developers. We need to identify other areas of enhancement like image retrieval on web, file transmission on web and multimedia objects transmission. These areas need more enhancements. Similarly, network and internet issues are still exist. We need to enhance our networks and internet to enhance the web performance. We can obtain the high availability feature of our web sites through mirroring at the database level which is not discussed in this review paper. Similarly, we can cluster our servers at region level to handle the heavy traffic on web sites in different regions of the world.
To meet the web application users performance demands, we need to apply these web performance testing techniques and web enhancement techniques as discussed above on our web applications. Then we can handle the web performance issues to some extent. Other areas of performance also need to enhance like file transmission, image retrieval etc. because these are also the factors which increases the response time. Due to these issues business and customers are affecting more frequently.