질문/조언질답게시판

안녕하세요.

 

Ubuntu 18.04 + Nginx + Php74 + Mariadb 환경에서 워드프레스 웹사이트를 운영하고 있습니다.

 

현재 워드프레스의 페이지 캐시 플러그인과 더불어 Opcache, Redis, Fast cgi cache 로 구성해 두었습니다.

 

트래픽이 높지는 않지만 속도 향상을 위해 리버스 프록시에 관해 알아 보았는데요.. 

 

주로 고품질의 사진을 보여줘야되는 홈페이지라, 원본 이미지 파일이 최소 2000 x 2000 픽셀의 jpeg 파일을 업로드하고 있습니다.

 

그런데 이런 이미지 파일 몇개를 올리니 한 페이지 용량이 8메가에 육박하더군요... 

 

해상도별로 썸네일을 따로 제작해, 클릭 시에만 원본이 표시되도록 하고 WEBP로도 제공을 하지만,

 

그래도 원본 파일의 용량은 조금만 낮추면서, 이미지의 로딩 속도를 더 빠르게 하고 싶습니다

 

1) 만약 동일한 서버 내에서 리버스 프록시를 구성해 이미지 파일들만 불러올 경우 속도 향상이 있을까요?

 

2) 리버스 프록스에 관해 찾아보니, 만약 Fastcgi 캐시를 이용하고, self hosted cdn을 구성했을때와 비슷한 방식처럼 보입니다만..이게 같은건데 구성 방법이 다른건가요?

 

늘 XETOWN에서 많은 도움을 받고 있습니다.

 

읽어주셔서 감사합니다.

  • profile

    이론적으로는 조금 느려집니다. 한 단계를 더 거치기 때문에...

    현실적으로는 nginx가 워낙 빠르기 때문에 리버스 프록시를 쓰든 안 쓰든 거의 차이가 없습니다.

    결론적으로는 아무 효과 없는 사서고생일 가능성이 높습니다.^^

  • profile ?
    안녕하세요 기진곰님.

    빠른 답변 정말 감사합니다! 그렇군요. 정말 미리 문의해봐서 다행입니다.

    말씀해주신대로 사서고생을 할 뻔 했네요 🤣

    죄송합니다만, 혹시 서버 전체의 사양을 올리거나, 원본 이미지의 용량을 적게 만드는 것 이외에

    제가 이미지의 로딩 속도를 빠르게 만들 수 있는 다른 방법이 있을까요?

    답변 감사합니다.
  • ? profile

    이미지 로딩에 좋은 압축포멧을 사용하시거나 이미지 업로드시 용량 줄이기 혹은 이미지에 대한 파일 최적화 이외에는 대부분 회선문제라 서버변경하셔야할 것 같아요.

     

    아니면 이미지 서버를 다른곳에 두고, 해당 서버에서는 이미지 트래픽만 담당하도록 하는 방법을 사용하시거나요..ㅎㅎ 

  • profile ?
    안녕하세요 람보님. 답변 감사합니다.

    그렇군요. 딱히 큰 해결 방법은 없어 보이네요.

    말씀하신대로 이미지 서버를 다른곳에 두는.. 방법을 이전에 사용해 보았습니다.

    그런데 http/2 가 지원되는 환경에, 국내에 서버가 있는 호스팅 업체를 이용할 경우 굳이 이걸 나눌 필요가 있을까??

    생각해 지금은 아에 한 서버에서 모두 처리를 하고 있는데요....

    실제로 큰 차이가 없을 것 같아 다시 해보기에 고민이되네요 ㅜㅜ

    담변 감사합니다.
  • ? profile
    뭐 국내호스팅에서 이미지만 빠르게 처리가능한 환경이라면 좀 더 로딩속도에 좋죠. 사용여부는 역시 사용자가 정하는것이니 편한 방법대로 하시면 됩니다.ㅎㅎ
  • ? profile
    이미지서버를 분리하시는 분들은 대부분 트래픽 요금을 절약하기 위해서 그렇게 하는 것입니다. 메인서버가 국내에 있다면, 뭐든지 분리함으로써 얻는 성능상의 이득은 없거나 마이너스입니다.
  • profile ?

    안녕하세요 기진곰님! 답변 정말 감사합니다.

    그렇군요. 잘 알겠습니다.

    죄송합니다만 첫번째 답변해주신 " 한 단계를 거치면 더 느려질 수 있다. "에 관해 조금만 더 여쭈어도 될까요?

    혹시 해당 사항이 캐시에도 똑같이 적용할 수 있는지 궁금합니다.

    저는 https://i.imgur.com/4ZIUrxE.png 이 다이어그램 처럼 외국의 서버 구성을 해 둔 상황입니다만..

    Page cache = Wp rocket cache plugin, Fast cgi cache
    Object cache = Redis
    이외에도 php의 opcache나 nginx의 open file cache 등을 활성화 시켜 두었습니다.

    페이지 캐시를 두개를 사용하는 이유는 wp rocket의 경우 fastcgi와 자동으로 호환이 되어 캐싱을 한다고 해서 그냥 적용시켜둔 상황입니다.

    그런데 사실 이렇게 캐시를 여러개 적용시켜도 웹사이트 속도가 빨라졌다는 체감은 딱히 못느꼇습니다.

    오히려 캐시도 여러개를 적용시켜두면 느려질 수도 있을까요? 오히려 불필요하게 메모리만 차지하고 있는게 아닐까 생각이 됩니다.

    현재 적용한 구성으로 웹사이트는 아무 문제 없이 잘 작동합니다만, 한단계 더 거쳐가고 있는게 아닐까 싶어 문의드립니다.

    알려주셔서 정말 감사합니다.

  • ? profile
    캐시 플러그인 설정 상태에 따라 fastcgi cache는 별 의미가 없을 수도 있습니다.
    워드프레스 캐시 플러그인들 중 카고컬트 식으로 이것저것 다 붙여놓은 것이 너무 많아요.
    체감속도나 서버 부하에 영향을 주지 않는 선에서 최대한 빼는 것이 좋습니다.

    또한 서버가 1대뿐이라면 memcached나 redis보다 apc(apcu)가 성능이 더 좋습니다.
    memcached나 redis는 소켓 통신을 해야 하지만, apc(apcu)는 소켓 통신이 필요없거든요.

    PHP의 opcache와 nginx의 open file cache는 기본 중의 기본이기 때문에
    그거 켜놓으셨다고 중복이라고 보지는 않습니다. 당연히 켜놔야 하는 거니까 그냥 논외로 칩니다.