diff --git a/src/frontend/deployment_details.go b/src/frontend/deployment_details.go
new file mode 100644
index 00000000000..02cabbda7ed
--- /dev/null
+++ b/src/frontend/deployment_details.go
@@ -0,0 +1,64 @@
+package main
+
+import (
+	"net/http"
+	"os"
+	"time"
+
+	"cloud.google.com/go/compute/metadata"
+	"github.com/sirupsen/logrus"
+)
+
+var deploymentDetailsMap map[string]string
+var log *logrus.Logger
+
+func init() {
+	initializeLogger()
+	// Use a goroutine to ensure loadDeploymentDetails()'s GCP API
+	// calls don't block non-GCP deployments. See issue #685.
+	go loadDeploymentDetails()
+}
+
+func initializeLogger() {
+	log = logrus.New()
+	log.Level = logrus.DebugLevel
+	log.Formatter = &logrus.JSONFormatter{
+		FieldMap: logrus.FieldMap{
+			logrus.FieldKeyTime:  "timestamp",
+			logrus.FieldKeyLevel: "severity",
+			logrus.FieldKeyMsg:   "message",
+		},
+		TimestampFormat: time.RFC3339Nano,
+	}
+	log.Out = os.Stdout
+}
+
+func loadDeploymentDetails() {
+	deploymentDetailsMap = make(map[string]string)
+	var metaServerClient = metadata.NewClient(&http.Client{})
+
+	podHostname, err := os.Hostname()
+	if err != nil {
+		log.Error("Failed to fetch the hostname for the Pod", err)
+	}
+
+	podCluster, err := metaServerClient.InstanceAttributeValue("cluster-name")
+	if err != nil {
+		log.Error("Failed to fetch the name of the cluster in which the pod is running", err)
+	}
+
+	podZone, err := metaServerClient.Zone()
+	if err != nil {
+		log.Error("Failed to fetch the Zone of the node where the pod is scheduled", err)
+	}
+
+	deploymentDetailsMap["HOSTNAME"] = podHostname
+	deploymentDetailsMap["CLUSTERNAME"] = podCluster
+	deploymentDetailsMap["ZONE"] = podZone
+
+	log.WithFields(logrus.Fields{
+		"cluster":  podCluster,
+		"zone":     podZone,
+		"hostname": podHostname,
+	}).Debug("Loaded deployment details")
+}
diff --git a/src/frontend/handlers.go b/src/frontend/handlers.go
index b41070336e7..55890575e60 100644
--- a/src/frontend/handlers.go
+++ b/src/frontend/handlers.go
@@ -26,7 +26,6 @@ import (
 	"strings"
 	"time"
 
-	"cloud.google.com/go/compute/metadata"
 	"github.com/gorilla/mux"
 	"github.com/pkg/errors"
 	"github.com/sirupsen/logrus"
@@ -116,7 +115,7 @@ func (fe *frontendServer) homeHandler(w http.ResponseWriter, r *http.Request) {
 		"platform_css":      plat.css,
 		"platform_name":     plat.provider,
 		"is_cymbal_brand":   isCymbalBrand,
-		"deploymentDetails": getDeploymentDetails(r),
+		"deploymentDetails": deploymentDetailsMap,
 	}); err != nil {
 		log.Error(err)
 	}
@@ -201,7 +200,7 @@ func (fe *frontendServer) productHandler(w http.ResponseWriter, r *http.Request)
 		"platform_css":      plat.css,
 		"platform_name":     plat.provider,
 		"is_cymbal_brand":   isCymbalBrand,
-		"deploymentDetails": getDeploymentDetails(r),
+		"deploymentDetails": deploymentDetailsMap,
 	}); err != nil {
 		log.Println(err)
 	}
@@ -313,7 +312,7 @@ func (fe *frontendServer) viewCartHandler(w http.ResponseWriter, r *http.Request
 		"platform_css":      plat.css,
 		"platform_name":     plat.provider,
 		"is_cymbal_brand":   isCymbalBrand,
-		"deploymentDetails": getDeploymentDetails(r),
+		"deploymentDetails": deploymentDetailsMap,
 	}); err != nil {
 		log.Println(err)
 	}
@@ -386,7 +385,7 @@ func (fe *frontendServer) placeOrderHandler(w http.ResponseWriter, r *http.Reque
 		"platform_css":      plat.css,
 		"platform_name":     plat.provider,
 		"is_cymbal_brand":   isCymbalBrand,
-		"deploymentDetails": getDeploymentDetails(r),
+		"deploymentDetails": deploymentDetailsMap,
 	}); err != nil {
 		log.Println(err)
 	}
@@ -448,7 +447,7 @@ func renderHTTPError(log logrus.FieldLogger, r *http.Request, w http.ResponseWri
 		"error":             errMsg,
 		"status_code":       code,
 		"status":            http.StatusText(code),
-		"deploymentDetails": getDeploymentDetails(r),
+		"deploymentDetails": deploymentDetailsMap,
 	}); templateErr != nil {
 		log.Println(templateErr)
 	}
@@ -517,36 +516,3 @@ func stringinSlice(slice []string, val string) bool {
 	}
 	return false
 }
-
-func getDeploymentDetails(httpRequest *http.Request) map[string]string {
-	var deploymentDetailsMap = make(map[string]string)
-	var metaServerClient = metadata.NewClient(&http.Client{})
-	var log = httpRequest.Context().Value(ctxKeyLog{}).(logrus.FieldLogger)
-
-	podHostname, err := os.Hostname()
-	if err != nil {
-		log.Error("Failed to fetch the hostname for the Pod", err)
-	}
-
-	podCluster, err := metaServerClient.InstanceAttributeValue("cluster-name")
-	if err != nil {
-		log.Error("Failed to fetch the name of the cluster in which the pod is running", err)
-	}
-
-	podZone, err := metaServerClient.Zone()
-	if err != nil {
-		log.Error("Failed to fetch the Zone of the node where the pod is scheduled", err)
-	}
-
-	deploymentDetailsMap["HOSTNAME"] = podHostname
-	deploymentDetailsMap["CLUSTERNAME"] = podCluster
-	deploymentDetailsMap["ZONE"] = podZone
-
-	log.WithFields(logrus.Fields{
-		"cluster":  podCluster,
-		"zone":     podZone,
-		"hostname": podHostname,
-	}).Debug("Fetched pod details")
-
-	return deploymentDetailsMap
-}
diff --git a/src/frontend/templates/footer.html b/src/frontend/templates/footer.html
index bcb7a3e3592..928fb0a2096 100755
--- a/src/frontend/templates/footer.html
+++ b/src/frontend/templates/footer.html
@@ -29,9 +29,18 @@
                 <br/>
                 <small>
                     {{ if $.deploymentDetails }}
-                    <b>Cluster: </b>{{index .deploymentDetails "CLUSTERNAME" }}<br/>
-                    <b>Zone: </b>{{index .deploymentDetails "ZONE" }}<br/>
-                    <b>Pod: </b>{{index .deploymentDetails "HOSTNAME" }}
+                        {{ if index .deploymentDetails "CLUSTERNAME" }}
+                        <b>Cluster: </b>{{ index .deploymentDetails "CLUSTERNAME" }}<br/>
+                        {{ end }}
+                        {{ if index .deploymentDetails "ZONE" }}
+                        <b>Zone: </b>{{ index .deploymentDetails "ZONE" }}<br/>
+                        {{ end }}
+                        {{ if index .deploymentDetails "HOSTNAME" }}
+                        <b>Pod: </b>{{ index .deploymentDetails "HOSTNAME" }}
+                        {{ end }}
+                    {{ else }}
+                    Deployment details are still loading.
+                    Try refreshing this page.
                     {{ end }}
                 </small>
             </p>