2013-03-10 2 views
2

나는 사이트 https://petitions.whitehouse.gov/에서 자바 스크립트 파일의 소스 (src)로 URL을왜 자바 스크립트와 CSS 파일의 이름이 복잡합니까?

https://petitions.whitehouse.gov/sites/default/files/js/js_UiAlkc-vULf24xt5asxqvUtyoWeGDuXLXt7ti6xNnGg.js

을 발견했다.

그리고 CSS 파일이 하나

https://petitions.whitehouse.gov/sites/default/files/css/css_7HCSWa0-mjR4tMqcKk2MWsaQFvHYUU9FuXNLwF5yIEY.css

.

질문 자바 스크립트 또는 CSS 파일에 이러한 복잡한 이름이 사용되는 이유는 무엇입니까? 프레임 워크가 무엇인가 또는 무엇 때문입니까? 비록 그것이 어떤 틀에 의한 것이라 할지라도, 그 의문은 여전히 ​​남아 있습니다.

+0

@yabol 질문은 여전히 ​​나타납니다. –

답변

1

이름은 아마도 일종의 minifier/obfuscator에 의해 생성 된 이름 일 수 있습니다.
CSS/JS 스크립트를 컴파일 할 때마다 새 버전의 스크립트가 만들어지고 브라우저가 이전 버전의 캐시를로드하지 못하도록하기 때문에 복잡합니다. 캐시의 새 버전이 있어야합니다.

+0

css/js 스크립트의 컴파일 - 빛을 더 많이 여기에서 발산 할 수 있습니까? –

+0

https://code.google.com/p/cssmin/ https://code.google.com/p/minify/ –

+0

버전 번호를 사용하여 생성 된 해시 문자열 http 대신 새 스크립트를 강제로로드합니다. : //stackoverflow.com/questions/32414/how-can-i-force-clients-to-refresh-javascript-files 훨씬 더 나은 접근법 –

1

파일 이름이 해시 및/또는 버전 관리되는 것처럼 보입니다. 이렇게하면 올바른 스타일, JavaScript 및 에셋이 항상로드되도록 할 수 있습니다. 그것은 또한 기계 생성 또는 축소의 결과 일 수 있습니다.

4

이것은 생산을 위해 필요하지 않은 문자/기호 (줄 바꿈/설명 등)를 제거하는 'minification' 프로세스 때문일 수 있습니다.

일반적으로이 프로세스는 'Bundling'의 일부로, 각 소스 파일을 축소 할뿐만 아니라 여러 소스 (css/js) 파일을 결합하여 HTTP 요청 수를 줄입니다.

각 번들 결과는 고유 한 이름으로 저장되어 다음 번 반복은 caching을 방지하고 새 수정 된 번들의 변경 사항을 반영 할 수있는 다른 고유 한 이름을 갖게됩니다.

2

정적 파일을 해싱하여 저장하는 트릭입니다.

이 저장 용량의 목적은 일부 정적 페이지가 여전히 정적 파일 버전을 참조하는 경우에 대비하여 이전 정적 파일 버전을 계속 유지하는 것입니다. 그들은 당신이나 타사 프록시 서버에 의해 캐시되기 때문입니다. 또한 far future Expires headers을 배포 된 파일에 적용하여 이후의 페이지 방문에 대한로드 시간을 단축하려는 경우 매우 유용합니다.

+1

설명, 자세한 설명 --- 소리가 어려워요. –

+0

사실 매우 간단합니다. 먼 미래의 만료 헤더에 대한 더 나은 이해와 다른 버전의 정적 파일과의 상관 관계에 대한 링크를 따라 가십시오. "장래의 만료 헤더를 사용하면 구성 요소가 변경 될 때마다 구성 요소의 파일 이름을 변경해야합니다" – hymloth

0

CSS와 JavaScript가 각 언어 (즉, 한 파일의 모든 CSS, 한 파일의 모든 JavaScript)에 단일 파일로 결합 된 이유는 모든 대답이 정확하지만 아무도 진짜 이유를 제시하지 않았습니다 선형 숫자 ID 또는 버전 번호 대신에 영숫자 문자열 —이 사용 된 이유는 무엇입니까?

영숫자 해시를 사용하는 주된 이유는 일반적으로 집계와 관련하여 여분의 데이터를 저장하는 번거 로움이나 지연을 원하지 않기 때문입니다. 자동 시스템이있을 때마다 증가하는 숫자를 원한다면 그 숫자를 데이터베이스에 저장할 필요가 있습니다. 이 숫자가 버전 번호가되기를 원하면 더 복잡해집니다. 즉, 각 구체화 된 파일에 별도의 번호를 저장해야하기 때문입니다 (CMS를 사용할 때 에머 생성 파일의 수는 빠르게 변경 될 수 있습니다. 그 특정 페이지에).

HTML 소스를 렌더링 할 때 MD5 또는 SHA1과 같은 것을 사용하여 소금 값과 현재 타임 스탬프를 기반으로 영숫자 해시를 생성하는 것이 훨씬 간단합니다. 이러한 함수는 생성 된 해시의 길이와 계속 증가하는 타임 스탬프에 따라 이전 값 (캐싱이 포함될 때 피하기를 원하는 것, 다른 포스터에서 설명한 것처럼 피할 수있는 무언가)과의 충돌을 거의 보장합니다.

임의로 파일 이름을 임의로 만들면 외부 사용자가 핫 링크 또는 기타 사기를 방지 할 수 있습니다. 이것은 CSS의 문제는 아니지만 JS가 될 수 있습니다.

+0

CSS와 JavaScript가 하나의 파일로 결합되었습니다. 무엇을 의미합니까? –

+0

@IstiaqueAhmed - 대부분의 집계 메소드는 모든 css 파일을 하나의 파일로 결합하고 모든 js 파일을 하나의 파일로 결합합니다. 그 이유는 브라우저가 필요로하는 서버 연결을 줄이기 위해서입니다. 그것이 내가 의미 한 전부입니다. 명확하게하기 위해 다시 쓰겠습니다. – Pebbl