2012-01-23 24 views
10

Có ai biết khi tham số ChannelUrl được chuyển đến FB.init, thực sự được sử dụng bởi fb js sdk không? Tôi có thể thấy nó bị ảnh hưởng trong các tệp nhật ký nginx của chúng tôi và nó dường như là từ người dùng IE8, nhưng tôi không thể tự tạo lại nó. Tôi có ứng dụng khung nội tuyến Trang Fan, với các nút tương tự và plugin nhận xét.Khi nào ChannelUrl thực sự được sử dụng?

+0

Tôi thấy nó cũng được tải bởi FF và Chrome, khi tôi kiểm tra lưu lượng truy cập mạng trong khi tải trang của mình. Tính đến ** khi ** nó được tải, tôi không biết. – DMCS

Trả lời

19

bạn có thể xem bài đăng này. nó cũng được giải thích.

https://developers.facebook.com/blog/post/2011/08/02/how-to--optimize-social-plugin-performance/

liên kết bài đăng này có thể cập nhật trong tương lai. vì vậy tôi đang sao chép toàn bộ bài đăng từ blog của nhà phát triển FB bằng cách cung cấp toàn bộ tín dụng cho tác giả.


Làm thế nào-To: Tối ưu hóa Plugin Social Performance bởi Ankur Pansari - 03 tháng tám 2011 at 12:00 am

Hàng triệu trang web sử dụng XFBML để render các plugin xã hội. Chúng tôi muốn chia sẻ một số phương pháp hay nhất có thể cải thiện hiệu suất của các trang web này trên trang web của bạn. Cụ thể, chúng tôi cung cấp channelUrl tùy chỉnh và tải không đồng bộ, khi được sử dụng, sẽ cải thiện thời gian tải và giảm các vấn đề khác như tính hai lần lưu lượng truy cập giới thiệu từ Facebook.

URL kênh tùy chỉnh là thông số tùy chọn trong hàm FB.init được gọi là channelUrl. Khi bạn khởi tạo thư viện JavaScript, thêm tham số channelUrl trong hàm FB.init:

<div id="fb-root"></div> 
<script src="//connect.facebook.net/en_US/all.js"></script> 
<script> 
    FB.init({ 
    appId : 'YOUR APP ID', 
    status: true, // check login status 
    cookie: true, // enable cookies to allow server to access session, 
    xfbml: true, // enable XFBML and social plugins 
    oauth: true, // enable OAuth 2.0 
    channelUrl: 'http://www.yourdomain.com/channel.html' //custom channel 
    }); 
</script> 

điểm Các channelUrl vào một tập tin mà bạn thêm vào thư mục địa phương của bạn giúp cải thiện tốc độ truyền thông trong một số trình duyệt cũ. Nếu không có channelUrl, chúng tôi buộc phải sử dụng các giải pháp thay thế như tải bản sao thứ hai của trang web vào iframe ẩn để tải đúng các plugin xã hội. Cách giải quyết tăng thời gian tải và tăng lưu lượng truy cập giới thiệu từ Facebook.

Để tạo một tập tin channel.html, thêm dòng sau vào tập tin (đặt tại http://www.yourdomain.com/channel.html):

<script src="//connect.facebook.net/en_US/all.js"></script> 

Nếu bạn có khả năng chạy PHP, chúng tôi khuyên thiết lập một bộ nhớ cache dài cho tệp channelUrl để đảm bảo hiệu suất tối ưu. Đây là một mẫu PHP kịch bản hoàn thành điều này:

<?php 
    $cache_expire = 60*60*24*365; 
    header("Pragma: public"); 
    header("Cache-Control: maxage=".$cache_expire); 
    header('Expires: '.gmdate('D, d M Y H:i:s', time()+$cache_expire).' GMT'); 
?> 

<script src="//connect.facebook.net/en_US/all.js"></script> 

Trong trường hợp này, bạn cũng nên thiết lập các tập tin channelUrl đến URL đầy đủ như http://www.yourdomain.com/channel.php.

Trong thử nghiệm của chúng tôi, việc thêm kênh tùy chỉnhUrl cải thiện hiệu suất trong Internet Explorer và do đó sự bao gồm của nó được thông báo cho tất cả các nhà phát triển của chúng tôi. Internet Explorer mang lại lợi ích hiệu suất đáng kể về mặt thống kê khi bao gồm thông số, trong đó thời gian tải của trang web thử nghiệm với 5 plugin XFBML cải thiện từ 1,10 giây lên 0,43 giây.

Tải không đồng bộ là một chiến thuật đơn giản khác cho phép trang của bạn tải nhanh mà không chặn tải các phần tử khác trên trang của bạn. Khi tải thành công JS SDK, chúng ta gọi hàm window.fbAsyncInit. Tất cả các chức năng front-end phụ thuộc vào các cuộc gọi API Facebook nên được tách ra và được gọi thông qua window.fbAsyncInit. Điều này đảm bảo rằng các tính năng của Facebook được tải theo kiểu không bị chặn và sẽ tăng tốc độ hiển thị của nó, có lợi ích SEO tích cực. Khi thiết kế các tính năng xã hội của bạn, bạn nên tiếp cận nó với tâm lý này để bắt đầu.

Ví dụ:

<html xmlns:fb="https://www.facebook.com/2008/fbml"> 
<body> 
<div id="fb-root"></div> 
<script> 
    /* All Facebook functions should be included 
    in this function, or at least initiated from here */ 
    window.fbAsyncInit = function() { 
    FB.init({appId: 'your app id', 
      status: true, 
      cookie: true, 
     xfbml: true}); 

    FB.api('/me', function(response) { 
     console.log(response.name); 
    }); 
    }; 
    (function() { 
    var e = document.createElement('script'); e.async = true; 
    e.src = document.location.protocol + 
     '//connect.facebook.net/en_US/all.js'; 
    document.getElementById('fb-root').appendChild(e); 
    }()); 
</script> 
</body> 
<html> 

Chúng tôi đã cập nhật tài liệu hướng dẫn của chúng tôi để phản ánh tầm quan trọng của các tùy chọn này và thay đổi mẫu mã mặc định để bao gồm một channelUrl. Chúng tôi đang tiếp tục cập nhật tài liệu của mình như một phần của Chiến dịch phát triển tình yêu cũng như chia sẻ các phương pháp hay nhất khác thông qua bài đăng trên blog “Cách thực hiện”.

+0

cảm ơn liên kết của bạn. nó đã giải quyết được vấn đề :) –

+2

Nó sẽ là tốt nhất để cung cấp một chút nền hơn ở đây là các liên kết có thể chết theo thời gian. –

+2

À ... Tôi hơi lười một chút! :) .... cảm ơn đề xuất của bạn. lần tới tôi sẽ nhớ vấn đề này. –

Các vấn đề liên quan