작성일 : 17-10-25 21:12
|
[DNS] mod_pagespeed
|
|
|
글쓴이 :
조형래
 조회 : 3,239
|
Google에서 제공하는 웹서버용 최적화 모듈
Apache, Nginx 용이 제공 됨
Compile 된 모듈은 Linux/Apache만 제공되며, 나머지 OS, 웹서버에서 사용하려면 Compile(make install) 해서 사용해야함.
mod_pagespeed의 핵심
resouce들의 cache 및 rewrite
mod_pagespeed가 설치된 웹서버(Apache, Nginx)를 통해서 제공되는 resource(html,xml,js,css,image)들은 mod_pagespeed의 설정에 따라 rewrite되고 caching 되어 client에 제공된다
기존의 caching module인 mod_cache, mod_file_cache과 유사한 기능에 rewrite가 추가된 것
rewrite
html,js,css 등의 minify(공백 제거를 통한 용량 감소)
image의 recompress(JPG의 이미지 압축률/사이즈 조정)
cache
자주 요청되는 파일들을 다양한 방법으로 caching
File
Shared memory
Memcached
장점
개발단에서 큰 작업 없이 최적화 효과를 얻을 수 있다
Resource Merge & Minify
Cache Time 설정
Image & Script Lazy Loading
사이트 성능 측정 데이터 수집 가능(By Beacon)
단점
Apache에게 역할이 추가로 부가 됨
HW Resource가 늘어남
File Caching으로 인해 Strorage 사용량 증가
HW 성능 및 Storage 관리가 필요
Module Options
ModPagespeed on/off : 모듈 사용 여부 결정
ModPagespeedInheritVHostConfig on/off : VirtualHost도 global한 PageSpeed의 설정을 상속받아 적용시킬 것인지 결정
AddOutputFilterByType MOD_PAGESPEED_OUTPUT_FILTER : text/html, application/xhtml+xml 등으로 mod_pagespeed의 필터를 적용시킬 컨텐츠 타입들을 지정
ModPagespeedFileCachePath : 캐싱될 파일들이 저장되는 경로
ModPagespeedMemcachedServers : PageSpeed 캐시로 이용할 memcached 서버 경로
ModPagespeedCreateSharedMemoryMetadataCache : 디스크나 멤캐시드의 부하를 줄이기위해 메모리에만 저잗할 캐시들의 경로 및 용량
ModPagespeedRewriteLevel : 페이지 스피드가 Rewrite 할 필터의 레벨 설정
CoreFilters : 기본으로 설정되는 필터들 (ModuleFilters 참고)
PassThrough : 개별 설정
ModPagespeedDisableFilters : 사용하지 않을 필터들의 목록
ModPagespeedEnableFilters : 사용할 필터들의 목록
ModPagespeedForbidFilters : 사용을 막을 필터들의 목록
ModPagespeedRewriteDeadlinePerFlushMs : Rewrite 한 리소스들을 Flush 할 주기
ModPagespeedDomain : 같은 저장소에 있는 리소스들이 다른 도메인에서 제공 될 경우, mod_pagespeed 설정들을 적용할 도메인을 추가로 설정할 수 있음
캐싱 사이즈/시간 관련 설정
ModPagespeedFileCacheSizeKb 102400
ModPagespeedFileCacheCleanIntervalMs 3600000
ModPagespeedLRUCacheKbPerProcess 1024
ModPagespeedLRUCacheByteLimit 16384
ModPagespeedCssFlattenMaxBytes 2048
ModPagespeedCssInlineMaxBytes 2048
ModPagespeedCssImageInlineMaxBytes 2048
ModPagespeedImageInlineMaxBytes 2048
ModPagespeedJsInlineMaxBytes 2048
ModPagespeedCssOutlineMinBytes 3000
ModPagespeedJsOutlineMinBytes 3000
ModPagespeedFileCacheInodeLimit : 캐싱할 파일들의 최대 갯수 (0이면 무제한)
ModPagespeedImageMaxRewritesAtOnce : 한번에 ReWrite할 Image들의 최대 갯수 (0이면 무제한)
ModPagespeedNumRewriteThreads : Rewrite할 Thred 갯수
ModPagespeedNumExpensiveRewriteThreads : 고성능 Rewrite를 할 Thred 갯수
ModPagespeed Js/Image/Css PreserveURLs : 캐싱될 때 URL이 변경되지 않아야 하는 리소스들에 대한 옵션
ModPagespeedJpegRecompressionQuality : JPEG 압축률 지정 (0~100,-1은 메타데이터 제거)
ModPagespeedImageWebpRecompressionQuality : WebP 압축률 지정(0~100)
ModPagespeedImageWebpTimeoutMs : WebP 압축 대기시간 지정(-1 무제한)
ModPagespeedImageLimitOptimizedPercent : 압축될 이미지의 용량 퍼센트
ModPagespeedImageLimitResizeAreaPercent : 압축될 이미지의 사이즈 퍼센트
ModuleFilters
필터 명
기본 적용
설명
add_head
Yes
html에 <head>가 없으면 추가시킴
combine_css
Yes
여러 개의 CSS를 하나로 합침
convert_gif_to_png
Yes
gif 이미지들을 최적화 시켜 png로 변환함
convert_jpeg_to_progressive
Yes
사이즈가 큰 jpg 이미지들을 progressive 형식으로 변경함
convert_meta_tags
Yes
메타 태그에 Response Header에 대한 정보를 삽입한다.
extend_cache
Yes
rewrite된 resource들의 cache 기간을 길게 설정한다
extend_cache_css
Yes
extend_cache_images
Yes
extend_cache_scripts
Yes
fallback_rewrite_css_urls
Yes
flatten_css_imports
Yes
@import 된 css를 모두 병합하여 inline으로 추가한다.
inline_css
Yes
사이즈가 작은 CSS를 inline으로 추가한다
inline_images
Yes
사이즈가 작은 이미지를 inline으로 data:uri 형식으로 추가한다
inline_import_to_link
Yes
@import로 된 구문을 link로 변환한다
inline_javascript
Yes
사이즈가 작은 JS를 inline으로 추가한다.
jpeg_sampling
Yes
jpeg 압축시 샘플링 비율 수정
recompress_images
Yes
이미지 파일들의 압축률을 조정
recompress_jpeg
Yes
jpeg형식의 이미지들의 압축률을 조정(메타테그 제거)
recompress_png
Yes
png형식의 이미지들의 압축률을 조정(메타테그 제거)
recompress_webp
Yes
webp형식의 이미지들의 압축률을 조정
resize_images
Yes
img tag안에 들어있는 이미지들을 width,height 크기에 맞게 resize
rewrite_css
Yes
css 압축 및 최적화
rewrite_images
Yes
이미지 압축 및 최적화
rewrite_javascript
Yes
js 압축 및 최적화
rewrite_style_attributes_with_url
Yes
inline으로 들어가있는 리소스들을 data:uri 형식으로 변경
strip_image_color_profile
Yes
이미지의 컬러 정보를 제거한다
strip_image_meta_data
Yes
이미지의 메타 정보를 제거한다
기본으로 적용되지 않는 필터들
add_instrumentation
No
사이트 속도 측정을 하는 스크립트를 추가한다
canonicalize_javascript_libraries
No
jquery와 같은 javascript library들을 공용 호스팅 서비스로 redirect한다
collapse_whitespace
No
HTML의 공백을 제거한다(<pre>, <script>, <style>, <textarea> 태그 제외).
combine_heads
No
head가 여러 개일 경우 하나로 합쳐준다
combine_javascript
No
여러 개의 javascript를 하나로 합쳐준다
convert_jpeg_to_webp
No
jpeg 이미지들을 webp형식으로 변경한다
convert_png_to_jpeg
No
gif와 png를 jpeg 형식으로 변경한다
dedup_inlined_images
No
반복 되는 이미지를 처음 나오는 이미지로 대체한다.
defer_javascript
No
페이지 로딩이 완료될 때 까지 javascript 로딩을 연기한다.
elide_attributes
No
중요하지 않은 HTML 속성을 제거한다.
extend_cache_pdfs
No
pdf의 캐시 기간을 확장한다.
inline_preview_images
No
페이지 로딩이 완료될 때까지 저품질의 이미지로 노출하고 로딩이 완료되면 고품질 이미지로 교체한다.
insert_dns_prefetch
No
DNS확인 시간을 줄이기 위해 <link rel="dns-prefetch" href="//www.example.com"> 태그를 삽입한다.
insert_ga
No
구글 Analytics 스크립트를 추가한다.
insert_image_dimensions
No
img 태그에 width, height 를 추가한다
lazyload_images
No
이미지를 레이지 로딩 한다.
local_storage_cache
No
인라인된 리소스를 HTML5 캐시 스토리지에 저장한다
make_google_analytics_async
No
Google Analytics API 사용을 비동기로 설정한다
move_css_above_scripts
No
CSS요소를 script 태그 위로 이동한다.
move_css_to_head
No
CSS요소를 head 안으로 이동한다.
outline_css
No
큰 블록의 CSS파일을 캐싱가능한 파일 변경한다.
outline_javascript
No
큰 블록의 JS파일을 캐싱가능한 파일 변경한다.
pedantic
No
type 속성이 존재하지 않고 페이지를 HTML5가 아닌 경우 <SCRIPT> 및 <STYLE> 태그의 기본 유형을 추가한다. 이 필터의 목적은 PageSpeed는 HTML4 유효성 검사를 중단하지 않도록하는 것.
prioritize_critical_css
No
페이지에서 사용하는 경우에만 CSS를 인라인 시킨다.
remove_comments
No
HTML의 주석 제거
remove_quotes
No
불필요한 따옴표 제거
resize_mobile_images
No
모바일 브라우저 일경우 inline_preview_images 처럼 제공
rewrite_domains
No
MapRewriteDomain andShardDomain 설정이 되어있을 경우 PageSpeed가 건드리지 않은 리소스들의 도메인을 rewrite
rewrite_style_attributes
No
style 속성안에 있는 css도 재작성한다
sprite_images
No
CSS 스프라이트 이미지들을 하나로 병합한다
trim_urls
No
긴 base url을 축소한다
[출처] mod_pagespeed 분석|작성자 Pitz
|
|