2013-03-22 2 views
1

Я довольно начинающий веб-мастер и получил огромную помощь здесь от замечательных добровольцев, и я ценю всех вас.Выполнение Карт Google, вызывающих проблемы со страницами страницы Google

Недавно кто-то здесь (Дэви) помог мне получить карту Google, чтобы запросить БД и отобразить на веб-странице, но это вызывает проблемы с скоростью страницы, которые я не могу взламывать самостоятельно.

Я обобщу; (Ссылки намеренно сломанные путем удаления 1 т с HTTPS, чтобы удовлетворить Algo здесь) С этим URL:

http://classifieds.your-adrenaline-fix.com/detail.php?fatherID=37&TypeID=42&ListingID=42

Google Page Speed ​​говорит; (Примечание From Me: следующие ссылки в полном выглядеть следующим образом:

HTPS: //mts0.googleapis.com/vt lyrs = H @ 210000000 & SRC = apiv3 & гектолитров = EN-US & х = 36 & у = 52 г = s = & стиля = апите% 7Csmartmaps)

следующие ресурсы идентично по содержанию, но подаются из разных URL. Служите эти ресурсы из согласованного URL-адреса, чтобы сохранить 10 запросов (-ей) и 1.9KiB.

htps://mts0.googleapis.com/vt?... 
htps://mts0.googleapis.com/vt?... 
htps://mts0.googleapis.com/vt?... 
htps://mts0.googleapis.com/vt?... 
htps://mts0.googleapis.com/vt?... 
htps://mts0.googleapis.com/vt?... 
htps://mts1.googleapis.com/vt?... 
htps://mts1.googleapis.com/vt?... 
htps://mts1.googleapis.com/vt?... 
htps://mts1.googleapis.com/vt?... 
htps://mts1.googleapis.com/vt?... 

Кроме того, я получаю;

Следующие ресурсы не имеют валидатора кеша. Ресурсы, которые не задают проверку подлинности кеша, не могут быть эффективно обновлены. Укажите Last-Modified или ETag заголовок, чтобы включить проверку кэша для следующих ресурсов:

htp://www.google.com/.../brand?... 
htps://maps.googleapis.com/.../GeocodeService.Search?... 
htps://maps.googleapis.com/.../StaticMapService.GetMapImage?... 
htps://maps.googleapis.com/.../StaticMapService.GetMapImage?... 
htps://maps.googleapis.com/maps/api/js?sensor=true 
htps://mts0.googleapis.com/vt?... 
htps://mts0.googleapis.com/vt?... 
htps://mts0.googleapis.com/vt?... 
htps://mts0.googleapis.com/vt?... 
htps://mts0.googleapis.com/vt?... 
htps://mts0.googleapis.com/vt?... 
htps://mts0.googleapis.com/vt?... 
htps://mts0.googleapis.com/vt?... 
htps://mts0.googleapis.com/vt?... 
htps://mts0.googleapis.com/vt?... 
htps://mts0.googleapis.com/vt?... 
htps://mts0.googleapis.com/vt?... 
htps://mts0.googleapis.com/vt?... 
htps://mts0.googleapis.com/vt?... 
htps://mts1.googleapis.com/.../ft?... 
htps://mts1.googleapis.com/.../ft?... 
htps://mts1.googleapis.com/.../ft?... 
htps://mts1.googleapis.com/vt?... 
htps://mts1.googleapis.com/vt?... 
htps://mts1.googleapis.com/vt?... 
htps://mts1.googleapis.com/vt?... 
htps://mts1.googleapis.com/vt?... 
htps://mts1.googleapis.com/vt?... 
htps://mts1.googleapis.com/vt?... 
htps://mts1.googleapis.com/vt?... 
htps://mts1.googleapis.com/vt?... 
htps://mts1.googleapis.com/vt?... 
htps://mts1.googleapis.com/vt?... 
htps://mts1.googleapis.com/vt?... 
htps://mts1.googleapis.com/vt?... 
htps://mts1.googleapis.com/vt?... 
htps://mts1.googleapis.com/vt?... 

Я надеюсь, что кто-то здесь хорошо знаком с этим и может иметь представление о том, как я мог бы решить эти проблемы.

Это код на detail.php

$TypeID = isset($_GET['TypeID']) ? $_GET['TypeID'] : ''; 
      $ListingID = isset($_GET['ListingID']) ? $_GET['ListingID'] : ''; 
      $allowed_tables = array('tt_42', 'tt_43'); 
      $table ="tt_".$TypeID; 
      $dbh = new PDO("mysql:host=$host;dbname=$db", $username, $password); 
      $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

     try { 
     if (in_array($table, $allowed_tables)) { 
     $query = "SELECT `Address`, `City`, `State/Province`, `Zip/Postal`, `Country` FROM `$table` WHERE `ID` = ? AND `ExpireDate` > NOW()"; 
     } 
       $stmt = $dbh->prepare($query); 
       $stmt->bindParam(1,$ListingID); 
       $stmt->setFetchMode(PDO::FETCH_ASSOC); 
       $stmt->execute(); 

       $Address = $listing['Address']; 
       $City = $listing['City']; 
       $State = $listing['State/Province']; 
       $Zip = $listing['Zip/Postal']; 
       $Country = $listing['Country']; 

       echo '<h2>Map of Surrounding Area With Navigational Aides</h2>'; 
       echo '<div class="CalloutBoxBlue">Hover over map and scroll, or use + and - in LH corner of map to zoom or expand viewing area. Alternatively, hold down mouse to manually move the map to a different geographical location, or drag the person icon to a specific location on the map for a street view.</div>'; 

       echo '<div id="GoogleMap">'; 
       echo '<iframe scrolling="no" style="width:480px; height:300px; border:0px;" frameborder="0" src="googlemap.php?Address='.$Address.'&amp;City='.$City.'&amp;State='.$State.'&amp;Zip='.$Zip.'&amp;Country='.$Country.'"></iframe>'; 
       echo '</div>'; 
      } 

      catch(PDOException $e) { 
       echo "Error in Displaying Google Map.". $e->getMessage() ;// Remove or modify after testing 
       //file_put_contents('PDOErrors.txt',date('[Y-m-d H:i:s]').", mapSelect.php, ". $e->getMessage()."\r\n", FILE_APPEND); 
      } 

Кроме того, это код googlemap.php

<!DOCTYPE html> 
    <html> 
    <head> 
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 
    <style type="text/css"> 
     html { height: 100% } 
     body { height: 100%; margin: 0; padding: 0 } 
     #map { height: 100% } 
    </style> 

    <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=true"> 
     var geocoder; 
     var map; 
    <?php 
     // Get parameters from URL 
     $Address = isset($_GET['Address']) ? $_GET['Address'] : ''; 
     $City = isset($_GET['City']) ? $_GET['City'] : ''; 
     $State = isset($_GET['State']) ? $_GET['State'] : ''; 
     $Zip = isset($_GET['Zip']) ? $_GET['Zip'] : ''; 
     $Country= isset($_GET['Country']) ? $_GET['Country'] : ''; 

     //Set javascript variables 
     echo "var Address ='".$Address."';\n"; 
     echo "var City ='".$City."';\n"; 
     echo "var State ='".$State."';\n"; 
     echo "var Zip ='".$Zip."';\n"; 
     echo "var Country ='".$Country."';\n"; 
?> 
    function initialize() { 
     geocoder = new google.maps.Geocoder(); 
     var latlng = new google.maps.LatLng(0,0); 
     var mapOptions = { 
      zoom: 7, 
      center: latlng, 
      mapTypeId: google.maps.MapTypeId.HYBRID 
     } 
     map = new google.maps.Map(document.getElementById('map'), mapOptions); 
     codeAddress(); 
     } 

     function codeAddress() { 
     var address = Address+','+City+','+State+','+Zip+','+Country; 
     geocoder.geocode({ 'address': address}, function(results, status) { 
      if (status == google.maps.GeocoderStatus.OK) { 
      map.setCenter(results[0].geometry.location); 
      var marker = new google.maps.Marker({ 
       map: map, 
       position: results[0].geometry.location 
      }); 
      } else { 
      alert('Location not acquired for the following reason: ' + status); 
      } 
     }); 
     } 
    </script> 

    </head> 
    <body onload ="initialize()"> 
    <div id="map" style="width:100%; height:100%"></div> 
    </body> 
</html> 

Я не знаю, если это на самом деле даже 100% релевантным, но я также имеют следующее в моем htaccess для кеширования ресурсов:

<IfModule mod_expires.c> 
# Enable expirations 
ExpiresActive On 
# Default directive 
ExpiresDefault "access plus 1 year" 
# Favicon 
ExpiresByType image/x-icon "access plus 1 year" 
# Images 
ExpiresByType image/gif "access plus 1 year" 
ExpiresByType image/png "access plus 1 year" 
ExpiresByType image/jpg "access plus 1 year" 
ExpiresByType image/jpeg "access plus 1 year" 
# CSS 
ExpiresByType text/css "access 1 month" 
# Javascript 
ExpiresByType application/javascript "access plus 1 year" 
</IfModule> 

Я надеюсь, что это просто дело. f нужно добавить строку кода в мой htaccess. Если так, я не знаю, что бы я добавил, и если бы кто-нибудь мог мне помочь, я был бы очень благодарен.

+0

Привет всем, Спасибо за редактирование.«Мой плохой» – 2013-03-22 15:55:36

+1

Работаете ли вы с картой, и только Google Page Speed ​​жалуется на ресурсы Google, которые загружает API Карт Google? Я не думаю, что вы можете с этим поделать. Игнорируй это. –

+0

У меня такая же проблема. Моя встроенная карта Google работает отлично, но PageSpeed ​​сказал мне: «Служить ресурсу с уникального URL-адреса, чтобы исключить дублирование байтов загрузки и дополнительных RTT». Да, я могу игнорировать его, но он показан как проблема с высоким приоритетом, и это не хорошо с точки зрения качества –

ответ

7

Вы не можете влиять на заголовки кеша ресурса, который вы не контролируете, эти фрагменты карты находятся в домене Google, а не в вашем. Я не знаю, почему Google не следует своим советам при обслуживании карт, но в конце дня вы ничего не можете сделать, кроме как удалить карту, или попробовать другое решение для сопоставления.

Это просто заголовок кэша, поэтому в любом случае загрузка страницы не будет медленнее на начальных нагрузках. Забудьте об этом и продолжайте.

Смежные вопросы