Wdrażam aplikację statyczną za pomocą polecenia aws. Kopiuję wszystkie pliki z mojego folderu do segmentu s3 za pomocą tego polecenia:
aws s3 sync C:app s3://myBucket
Chcę ustawić kodowanie zawartości na gzip tylko do plików js, jpg i html. Udało mi się to zrobić dla wszystkich folderów za pomocą tego polecenia: --content-encoding gzip
Jak mogę to zrobić tylko dla określonego typu plików?
Odpowiedzi:
0 dla odpowiedzi № 1To jest stare, ale musiałem znaleźć sposób, aby to zrobić: nie używam Cloudfront, a proxy, którego używamy, nie obsługuje gzip ... więc:
- Wyklucz wszystkie pliki
- Uwzględnij poszczególne typy plików według potrzeb
- Ustaw odpowiednie kodowanie / opcje
Poniżej dodam także kontrolę dostępu i kontrolę pamięci podręcznej oraz usuwam wszelkie pliki w s3 nieobecne w katalogu lokalnym
Oddzieliłem JS / CSS od wszystkich obrazów, HTML, ale prawdopodobnie nie jest to konieczne.
Miałem jednak dużo kłopotów, nie ustawiając jawnie kodowania treści / pamięci podręcznej dla każdej osoby - w tym, więc ustawiłem ją jak poniżej, aby była bardziej przejrzysta.
Dokumenty AWS, które znalazłem, nie wspominają o żadnej z tych rzeczy
aws s3 sync ./dist/ s3://{bucket}
--exclude "*"
--include "static/*.ico" --acl "public-read" --cache-control no-cache
--include "static/*.png" --acl "public-read" --cache-control no-cache
--include "*.html" --acl "public-read" --cache-control no-cache
--include "static/img/*.svg" --acl "public-read" --cache-control no-cache
--delete
aws s3 sync ./dist/ s3://{bucket}
--exclude "*"
--include "static/js/*.js" --acl "public-read" --cache-control no-cache --content-encoding gzip
--include "static/css/*.css" --acl "public-read" --cache-control no-cache --content-encoding gzip
--delete
Dość zgrabna poprawa prędkości dla serwowania tylko z s3.