Что в мире facebook это rsrc.php? - PullRequest
       17

Что в мире facebook это rsrc.php?

11 голосов
/ 12 декабря 2010
http://static.ak.fbcdn.net/rsrc.php/117600/css/base.css

http://static.ak.fbcdn.net/rsrc.php/z4HBM/hash/3krgnmig.swf

http://b.static.ak.fbcdn.net/rsrc.php/z23ZQ/hash/3ls2fki5.xml

http://static.ak.fbcdn.net/rsrc.php/z7O0P/hash/4hw14aet.png

Что на самом деле делает rsrc.php? Я знаю, что rsrc означает ресурс, а rsrc.php / z [random] / hash или css / file.extenstion загружает файл из какого-то файла.

Предполагается, что / hash / или / css / - это папка, в которой хранятся файлы типа .xml .png .swf, но что с z [random] и почему они хотят загрузить файл из php? Это что-то вроде контроля версий для файла или как? Если да, то как это сделать (проще)?

Ответы [ 5 ]

9 голосов
/ 23 сентября 2011

Все просто, эти файлы хранятся в базе данных. Все, что после SELF (имя сценария, в данном случае сценарий rsrc.php), передается сценарию в качестве параметра для базы данных. Я использую себя для файлов изображений, вы основываете 64 изображения, сохраняете его в базе данных и, как правило, с небольшим количеством волшебства mod_rewrite вы можете получить URL-адрес изображения, чтобы быть youtsite.com/images/fish-with-wings, когда это действительно делаем это: yoursite.com/some-script.php/fish-with-wings, который действительно говорит базе данных искать искать, получить изображение из базы данных, где title = fish-with-wings, и оно выплевывает base64 для этого файла.

Преимущества наличия всего в базе данных заключаются в том, что авторам контента легче ссылаться на файл, и вы можете удалять или очищать или даже изменять с помощью какого-нибудь классного AJAX, а также полезно прекратить хотлинкинг, чего не сделал Facebook здесь, но вы могли бы сказать, что если URL - это полный путь, то перенаправление на предупреждение горячей ссылки.

4 голосов
/ 16 июня 2014

rsrc.php используется Facebook для контроля версий всех статических файлов, особенно изображений, javascript и таблиц стилей.Это позволяет Facebook применять изменения к основному стеку приложений, включая изменения к файлам статического содержимого, не нарушая функциональность для пользователей, использующих старую кэшированную версию.Он встроен в архитектуру Facebook как часть системы Haste.

  1. Ссылка на идентификацию кода функции от оригинального разработчика
  2. Рекомендуемый процесс управленияСтатические ресурсы (phabricator.com)
1 голос
/ 28 января 2011

Не думайте, что это связано с целями CDN, не имеет смысла запускать его через «статический» сервис для обслуживания динамически генерируемого контента.

Однако я думаю, что это может быть использовано для храненияоткройте соединение и отправьте данные для обновлений в Facebook (вот где XML будет иметь для меня смысл).

0 голосов
/ 07 февраля 2017

Есть моя версия rsrc.php

$request = basename($_SERVER[REQUEST_URI]);
$dotIndex = strrpos($request, ".");
$extension = substr($request, $dotIndex+1);
switch ($extension):
    case 'js': $content_type="application/javascript"; break;
    default: $content_type="text/css"; break;
endswitch;
$file = Gdecode($request);
$script_file = dirname(__FILE__)."/".$extension."/".$file.".".$extension;
$fp = @fopen($script_file, "r");
if($fp):
    fclose($fp);
    header('Content-type: '.$content_type);
    echo file_get_contents($script_file);
endif;
0 голосов
/ 23 октября 2016

Все скриптовые / CSS-файлы Facebook хранятся в базе данных, и Facebook использует rsrc.php для их получения.

Код rsrc.php может выглядеть следующим образом:

$request = basename($_SERVER["REQUEST_URI"])
if($request != " ") { 

$sql = "SELECT * FROM scripts";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
    while($row = mysqli_fetch_assoc($result)) {
        header('Content-type: '.$row["type"]);
        echo $row["script"];
    }
}

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...