Подтвердить что ты не робот

Как Facebook, Google и другие крупные приложения делают свои файлы CSS и JavaScript?

Facebook: http://static.ak.fbcdn.net/rsrc.php/v1/yh/r/u2OL99TwlfU.css

Google: http://ssl.gstatic.com/gb/js/sem_cf9545d69b4bd3d22ed10206010c8b23.js

Существуют и другие сайты, такие как Tagged, которые также используют этот метод.

Как эти сайты и другие крупные приложения делают эти файлы? Я предполагаю, что когда они обновляют свой файл, URL-адрес фактически изменяется, так что кеш не распознает URL-адрес и перезагружает новый файл.

На самом деле я больше смущен о Facebook rsrc.php, но я все еще не совсем понимаю остальных. Кажется, Google случайная строка является чем-то MD5.

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

4b9b3361

Ответ 1

(Я являюсь оригинальным автором системы управления статическими ресурсами rsrc.php и Facebook Haste.)

Вы можете найти описание некоторых проблем, с которыми столкнулись Facebook со статическим управлением ресурсами и как они их разрешили здесь, в документации Phabricator:

https://secure.phabricator.com/book/phabflavor/article/soon_static_resources/

К конкретному вопросу, URI rsrc.php похожи на это (с ними "rsrc.php" ), потому что у нас не было глобального правила перезаписи Apache в 2007 году, когда я писал rsrc.php и добавлял, развертывая и тестирование одного для более элегантного URI, похоже, не стоит беспокоиться (в PHP вы можете прочитать оставшуюся часть URI после части файла "x.php" во время выполнения). Таким образом, эта часть является всего лишь артефактом реализации PHP.

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

Ответ 2

Facebook и Google используют суффикс md5 в имени своего статического ресурса.

Во-первых, это общая оптимизация производительности, мы можем управлять версиями статического ресурса с помощью md5 его содержимого файла (после минимизации) и установить кеш-контроль = 10 лет (nginx или apache). Если вы нажмете кнопку вперед/назад в своем браузере или просмотрите страницу второй раз, файл будет извлечен с вашего локального диска, а не через сеть (кроме нажатия кнопки перезагрузки, будет 304).

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