Как Facebook, Google и другие крупные приложения используют файлы CSS и JavaScript? - PullRequest
13 голосов
/ 06 сентября 2011

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-адрес и перезагружает новый файл.

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

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

Ответы [ 2 ]

29 голосов
/ 06 сентября 2011

(Я являюсь первоначальным автором 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.

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

0 голосов
/ 06 июня 2016

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

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

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

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