2013-06-21 1 views
0

아이디어는 일부 mixin을 사용하여 이미지 용 도메인을 생성한다는 것입니다. 두 개의 도메인에 동일한 이미지가 있다고 가정하면 한 도메인의 이미지 절반과 다른 도메인의 이미지의 절반을로드 할 수 있기를 원합니다.여러 정적 URL을 생성하는 SASS

PHP이 내가 그것을 위해 도메인을 얻기 위해 이미지를 렌더링 할 때마다 전화

$domains = array('domain1', 'domain2', 'domain3'); 
$domainIdx = 0; 

function getDomain(){ 
    $rVal = $domains[$domainIdx]; 
    $domainIdx = $domainIdx++ >= count($domains) ? 0 : $domainIdx++; 
    return $rVal; 
} 

같은 것입니다. SASS의 mixin에서 비슷한 기능을 수행하려면 어떻게해야합니까? CSS가 생성되면 도메인 목록간에 모든 URL이 배포됩니다. 사실

+3

이것은로드 밸런서로 더 잘 해결되는 것 같습니다. – cimmanon

+0

실제로는 최적화 해킹을로드하는 웹 페이지이며로드 균형 조정과 관련이 없습니다. 월요일과 보상에 따라 해결책을 시험해 볼 것입니다! 꽤 감사 동료 :) – ptheofan

답변

0

, 당신은 포트 꽤 노골적 SASS 코드를 exitsting 수 있습니다

@for $i from 1 through 10 
    .element-#{$i} 
    background-image: url("http://#{get-domain()}/images/foo.png") 

데모 : : 또한 http://sassbin.com/gist/5831644/

, 당신이 ' 이

$domains:  'domain1.com' 'domain2.org' 'domain3.net' 
$current-domain: 1 

@function get-domain() 
    $domain: nth($domains, $current-domain) 
    $current-domain: $current-domain + 1 
    @if $current-domain > length($domains) 
    $current-domain: 1 
    @return $domain 

당신은 다음과 같이 사용할 수 있습니다 PHP 스 니펫에 몇 가지 버그가 있습니다.

$domains = array('domain1', 'domain2', 'domain3'); 
$domainIdx = 0; 

function getDomain(){ 
    global $domains, $domainIdx; 
    $rVal = $domains[$domainIdx]; 
    $domainIdx = $domainIdx + 1>= count($domains) ? 0 : $domainIdx + 1; 
    return $rVal; 
} 

그리고 @cimmanon 절대적으로 옳다 : 올바른 코드가 될 것이다. 로드 밸런싱에 대한 이러한 접근 방식은 아마추어 성과 빈약 한 실행입니다. 당신의 나침반 구성 파일에서

+0

스 니펫은 실제 코드가 아닌 예제였습니다. – ptheofan

1

가 (. 즉 config.rb),이 같은 asset_host 기능을 사용할 수 있습니다 : 나는 @cimmanon 동의,

asset_host_list = ['domain.com', 'domain.org'] 
asset_host do |asset| 
    "http://%s" % asset_host_list[asset.hash % asset_host_list.length] 
end 

을하지만,이 방법은 약합니다.