0

根据文档,添加通道文件通过解决某些浏览器中的跨域通信问题,极大地提高了 Facebook JS SDK 的性能。

channel.html 文件的内容应该只有一行:

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

频道文件应设置为尽可能长时间地缓存。

在 PHP 中:-

<?php
 $cache_expire = 60*60*24*365;
 header("Pragma: public");
 header("Cache-Control: max-age=".$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>

如何在 Perl 中创建类似的文件?

4

1 回答 1

0

首先,将您的 channel.html 文件设置为 cgi 脚本(假设服务器在 Apache 下运行) - 您需要编辑配置文件以添加如下内容:

<Files "channel.html">
AddHandler cgi-script .html
Options ExecCGI
</Files>

然后用 Perl 重写这个文件:

#!usr/bin/perl

binmode STDOUT;
my $cache_expire = 60*60*24*365;
print "Pragma: public\n";
print "Cache-Control: max-age=",$cache_expire,"\n";
print 'Expires: ', Mailtime(time+$cache_expire),"\n";
print 'Content-Type: text/html; charset=utf-8'."\n\n";
print '<script src="//connect.facebook.net/en_US/all.js"></script>';

sub Mailtime { 
my @months = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec); 
my @wdays = qw(Sun Mon Tue Wed Thu Fri Sat); 
my ($sec,$min,$hour,$mday,$mon,$year,$wday) = gmtime($_[0]); 
return sprintf("%s, %02d %s %d %02d:%02d:%02d GMT", $wdays[$wday], $mday, $months[$mon], $year+1900, $hour, $min, $sec); 
}
于 2012-10-27T07:14:39.177 回答