Data grids primarily deal with providing services and infrastructure for distributed data-intensive applications that need to access, transfer and manage massive data sets stored in distributed storage resources. Data-intensive applications are becoming increasingly prevalent in domains of scientific and engineering research such as High energy physics, Earth science, bioinformatics, data mining, and Astronomy. In this kind of dynamic and large scale environment, a lot of challenges revolve around data management and transfer (Allcock et al., 2002 and Vazhkudai et al., 2001). In this context, data replication is an important technique which enables effectively addressing these challenges and improving performance in data grids. The general idea of replication is to store several copies of the same data in different sites across the grid. This clearly scales up the performance by reducing remote access delay and mitigating single point of failure (Boru et al., 2015). In addition, data replication helps overcoming long wide-area data transfer latencies by keeping data close to locations where queries are originated (Allcock et al., 2002). Indeed, through replication, data grid can achieve high data availability, improved bandwidth consumption, and better fault tolerance. Most of the works in the literature deal with read-only data. In this case, replication can greatly improve the performance (Goel and Buyya, 2006). However, if data updates are allowed, the benefits of replication can be neutralized by the overhead of maintaining consistency among multiple replicas (Serrano et al., 2007). In this paper, we mainly focus on the scenario dealing with the read-only data, i.e., without consistency management. Ranganathan and Foster (2001b) have defined three main decisions need to be made by any data replication strategy: (i) Which files to replicate? (ii) When to replicate? (iii) Where to replicate? Depending on the answers, intensive research has been conducted on developing data replication strategies.