0

ヘッダーにcssファイルとjavascriptファイルへの相対参照を含む単純なWebサイトがあります。これらを絶対 URL に展開し、プレフィックスとして「cdn」を付ける方法はありますか。ページの読み込み時に自動的に?

これが私の現在の頭の一部です:

<link rel="stylesheet" type="text/css" href="css/default.css">
<link rel="stylesheet" type="text/css" href="css/the-tooltip.css" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src="js/utf8.js" type="text/javascript"></script>
<script src="js/sha1.js" type="text/javascript"></script>
<script src="js/validatious.js" type="text/javascript"></script>

最後に必要なのは

<link rel="stylesheet" type="text/css" href="http://cdn.mydomain.com/css/default.css">
<link rel="stylesheet" type="text/css" href="http://cdn.mydomain.com/css/the-tooltip.css" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src="http://cdn.mydomain.com/js/utf8.js" type="text/javascript"></script>
<script src="http://cdn.mydomain.com/js/sha1.js" type="text/javascript"></script>
<script src="http://cdn.mydomain.com/js/validatious.js" type="text/javascript"></script>
4

3 に答える 3

1

すべてのスクリプト要素にプレフィックスを追加する方法は次のとおりです。

function appendPrefix(prefix) {
  var scripts = document.getElementsByTagName('script'),
      links =  document.getElementsByTagName('link'),
      foreach = Array.prototype.forEach;
  foreach.call(scripts, function (s) {
    if (s.src && (/(http|https)/).test(s.src)) {
       s.src = prefix + s.src;
    }
  });
  foreach.call(links, function (l) {
    if (s.src && (/(http|https)/).test(l.href)) {
       l.href = prefix + l.href;
    }
  });
}

appendPrefix('http://stackoverflow.com/');

このスクリプトは純粋な JavaScript であり、scriptlinkタグの両方で機能します。で始まらないものlinkとタグにのみプレフィックスを追加します。scripthttp://

于 2013-01-16T13:25:51.987 に答える
-1

JS は最適なソリューションではないようです。代わりにサーバー側で PHP を使用して問題を解決しました。グローバルな $prefix 変数を定義し、それを動的に生成されたホスト名とパスに追加して絶対 URL を取得し、スクリプトの移植性を維持しました。

于 2013-01-17T12:13:07.850 に答える
-1

要求をリダイレクトし/css/*たり、Web サーバーの構成ファイル (Apache サーバーの場合は .htaccess など) にリダイレクトしたり、ブラウザーで必要なファイルを取得したりできます。このソリューションは、Web サーバーに負荷をかけます (css または js ファイルを送信するほどではありません)。そのため、cdn へのパスを手動で書き込むことをお勧めします。/js/*cdn.example.com/css/*cdn.example.com/js/*

于 2013-01-16T13:41:10.517 に答える