2017-09-27 7 views
0

Google 페이지 속도 API를 사용하여 내 사이트의 URL을 테스트하고 있습니다. URL 구조가 "&"(쿼리 문자열 매개 변수)을 포함하지 않는 한 제대로 작동합니다."&"가 포함 된 URL이 Google pagespeed api와 함께 작동하지 않습니다.

예 (작품)

  • http://www.example.com
  • http://www.example.com/?id=1234
    1. 하지만이 같은 URL 뭔가를 변경할 때, 그때는 표시되지 않습니다 올바른 결과

      작동하지 않는 예제

      1) http://www.example.com/?id=1234&sub=890

      API는 "& 하위 = 890"부분을 무시하고

      http://www.example.com/?id=1234이 API 자바 스크립트 코드를 보면 대한 결과 반환

      function runPagespeed() {   
           var s = document.createElement('script'); 
           s.type = 'text/javascript'; 
           s.async = true; 
           var query = [ 
            'url=' + URL_TO_GET_RESULTS_FOR, 
            'strategy=' + strategy, 
            'callback=runPagespeedCallbacks', 
            'key=' + API_KEY, 
           ].join('&'); 
           s.src = API_URL + query; 
           document.head.insertBefore(s, null); 
          } 
      

      그래서이보고를 함수는 API가 "sub = 890"을 자체 매개 변수로 처리하므로이를 무시합니다. 내가 https://developers.google.com/speed/pagespeed/insights/에 URL http://www.example.com/?id=1234&sub=890를 사용하는 경우

      ,이 결과를

      참고 잘 작동하고 보여줍니다 : 나는 어떤 도움은 매우 극명하게 될 것이다 https://developers.google.com/speed/docs/insights/v2/first-app

      입니다 테스트 페이지 속도 샘플 코드를 사용하고

    +0

    아래 '.join을 시도 ('& ')' –

    +0

    .join ('& ') 작동하지 않습니다 :( – RashFlash

    +0

    음,'서브 = 890' 어떤 인코딩을 필요가 없습니다,하지만 당신의 코드 전체 URL을 쿼리 문자열로 사용하고 코드를 보내기 전에 URL 인코딩이 필요합니다. – adeneo

    답변

    2

    encodeURIComponent을 사용하여 URI를 인코딩해야 매개 변수가 입력으로 처리됩니다. 아마도

    function runPagespeed() {   
         var s = document.createElement('script'); 
         s.type = 'text/javascript'; 
         s.async = true; 
         var query = [ 
          'url=' + encodeURIComponent(URL_TO_GET_RESULTS_FOR), 
          'strategy=' + strategy, 
          'callback=runPagespeedCallbacks', 
          'key=' + API_KEY, 
         ].join('&'); 
         s.src = API_URL + query; 
         document.head.insertBefore(s, null); 
        } 
    
    +0

    예, 작동합니다. 감사합니다. – RashFlash