Ответ 1
Да. Это даже безопасное обновление, если кто-то не изменит историю в git и не сделает принудительный толчок.
Другими словами, контент является версионным.
Разрешено ли связывать файлы напрямую с Github?
<link rel="stylesheet" href="#" onclick="location.href='https://raw.github.com/username/project/master/style.css'; return false;"/>
<script src="https://raw.github.com/username/project/master/script.js"></script>
Я знаю, что это разрешено в Google Code. Таким образом, мне не нужно беспокоиться об обновлении локального файла.
Да. Это даже безопасное обновление, если кто-то не изменит историю в git и не сделает принудительный толчок.
Другими словами, контент является версионным.
Большой сервис RawGit уже упоминался, но я выложу еще один ринг: GitCDN.link
Выгоды:
Полное раскрытие информации, я поддерживаю проект в GitCDN.link
Вы можете использовать внешний сервер rawgithub.com
. Просто удалите точку между словами "raw" и "github" https://raw.github.com/.. => https://rawgithub.com/ и используйте ее. Больше информации вы найдете в этом вопросе.
Однако, согласно веб-сайту rawgithub, он будет закрыт в конце октября 2019 года.
Вам необходимо выполнить следующие шаги
Получить исходный url файла из github. Что-то вроде https://raw.githubusercontent.com/username/folder/example.css
Посетите http://rawgit.com/. Вставьте git url выше в поле ввода. Он будет генерировать два url, один для разработки и другой для производственной цели.
Скопируйте любой из них, и все готово.
Файл будет действовать как CDN. Вы также можете использовать URL-адреса gist.
Вы можете напрямую ссылаться на сырые файлы, но лучше не делать этого, так как необработанные файлы всегда отправляются с помощью простого/текстового заголовка и могут вызвать проблемы с загрузкой.
Добавьте ветку в свой проект с именем "gh-pages", и тогда вы (вскоре после ветвления) сможете использовать прямой URL-адрес, например https://username.github.io/project/master/style.css (используя ваш URL-адрес, и предполагая, что "style.css" - это файл в папке "master" в корне вашего репозитория "project"... и что ваша учетная запись Github - "username").
GitHub Страницы: https://yourusername.github.io/script.js
Исправленные файлы GitHub repo: https://github.com/yourusername/yourusername.github.io/blob/master/script.js
Используйте страницы GitHub, НЕ используйте необработанные файлы.
Причина: страницы GitHub основаны на CDN, сырые файлы - нет. Доступ к необработанным файлам напрямую затронет серверы GitHub и увеличит нагрузку на сервер.
После поиска этой же функциональности я закончил писать свой собственный PHP
script, чтобы действовать как прокси. Проблема, с которой я столкнулся, даже когда вы получаете версию/ссылку RAW из Github
и ссылаетесь на нее на своей собственной странице, отправленный заголовок был "text/plain", а Chrome
не выполнял мой JavaScript
файл из Github
. Мне также не нравились другие ссылки, размещенные для использования сторонних сервисов из-за очевидных проблем безопасности/вмешательства.
Таким образом, используя этот script, я могу передать ссылку RAW из Github
, установить script правильные заголовки, а затем вывести файл так, как если бы он поступал с моего собственного сервера. Этот script также можно использовать с защищенным приложением, чтобы вытащить незащищенные сценарии, не вызывая предупреждения SSL
о "небезопасных ссылках".
Связь
< script src= "proxy.php? link = https://raw.githubusercontent.com/UserName/repo/master/my_script.js" > </ script >
proxy.php
<?php
###################################################################################################################
#
# This script can take two URL variables
#
# "type"
# OPTIONAL
# STRING
# Sets the type of file that is output
#
# "link"
# REQUIRED
# STRING
# The link to grab and output through this proxy script
#
###################################################################################################################
# First we need to set the headers for the output file
# So check to see if the type is specified first and if so, then set according to what is being requested
if(isset($_GET['type']) && $_GET['type'] != ''){
switch($_GET['type']){
case 'css':
header('Content-Type: text/css');
break;
case 'js':
header('Content-Type: text/javascript');
break;
case 'json':
header('Content-Type: application/json');
break;
case 'rss':
header('Content-Type: application/rss+xml; charset=ISO-8859-1');
break;
case 'xml':
header('Content-Type: text/xml');
break;
default:
header('Content-Type: text/plain');
break;
}
# Otherwise, try and determine what file type should be output by the file extension from the link
}else{
# See if we can find a file type in the link specified and set the headers accordingly
# If css file extension is found, then set the headers to css format
if(strstr($_GET['link'], '.css') != FALSE){
header('Content-Type: text/css');
# If javascript file extension is found, then set the headers to javascript format
}elseif(strstr($_GET['link'], '.js') != FALSE){
header('Content-Type: text/javascript');
# If json file extension is found, then set the headers to json format
}elseif(strstr($_GET['link'], '.json') != FALSE){
header('Content-Type: application/json');
# If rss file extension is found, then set the headers to rss format
}elseif(strstr($_GET['link'], '.rss') != FALSE){
header('Content-Type: application/rss+xml; charset=ISO-8859-1');
# If css xml extension is found, then set the headers to xml format
}elseif(strstr($_GET['link'], '.xml') != FALSE){
header('Content-Type: text/xml');
# If we still haven't found a suitable file extension, then just set the headers to plain text format
}else{
header('Content-Type: text/plain');
}
}
# Now get the contents of our page we're wanting
$contents = file_get_contents($_GET['link']);
# And finally, spit everything out
echo $contents;
?>
Если ваш веб-сервер имеет активную allow_url_include, GitHub, обслуживающий файлы как raw plain/text, не является проблемой, поскольку вы можете сначала включить файл в скрипт PHP и изменить его заголовки на соответствующий тип MIME.