» » Hướng dẫn sử dụng CDN hiệu quả và tốt nhất cho SEO

Hướng dẫn sử dụng CDN hiệu quả và tốt nhất cho SEO

Sử dụng CDN là rất tốt để tăng tốc website nhưng làm thế nào để sử dụng CDN cho hiệu và tránh những vấn đề liên quan đến SEO như trùng lặp nội dung? Bài viết này sẽ hướng dẫn bạn tối ưu hóa website bằng CDN như cookieless domain hay cookie-free domains, chặn robots.txt và sử dụng canonical URL để tránh việc trùng lặp nội dung.Sử dụng CDN tốt cho SEO

Bạn có thể sử dụng CDN free của CloudFlare cho WordPressXenforo để tăng tốc website miễn phí một cách hiệu quả và không ảnh hưởng tới xếp hạng SEO.

Làm thế nào là tốt nhất để sử dụng CDN phục vụ cho nội dung tĩnh trên trang web của bạn như hình ảnh, các tập tin JS hay CSS và tốt nhất cho SEO?

  1. Sử dụng Cookie-free Domains (cookieless domain)
  2. Chặn robots.txt
  3. Sử dụng canonical URL

Cookie là gì?

Cookie là một đoạn văn bản ghi thông tin được tạo ra và lưu trên trình duyệt của máy người dùng. Cookie thường được tạo ra khi người dùng truy cập một website, cookie sẽ ghi nhớ những thông tin như tên đăng nhâp, mật khẩu, các lựa chọn do người dùng lựa chọn đi kèm

Cookie – https://vi.wikipedia.org/wiki/Cookie

Khi người dùng truy cập vào trang web sử dụng cookie, các tập tin cookie cũng sẽ được tạo ra trên tất cả các nội dung tĩnh bao gồm hình ảnh, tập tin JS và CSS… Các nội dung tĩnh sẽ mang theo các cookie này để giao tiếp giữa máy chủ web và máy tính người dùng. Tuy nhiên, máy chủ web không có bất kỳ nhu cầu sử dụng cookie đối với các nội dung tĩnh này. Vì thế các cookie cho nội dung tĩnh là dư thừa và không cần thiết.

Các cookie này rất nhỏ. Nếu trang web của bạn sử dụng cookie nhiều và số lượng truy cập cũng nhiều, bạn nên cân nhắc việc lưu trữ các nội dung này trên một domain khác mà không có bất kỳ một cookie nào.

Sử dụng subdomain hoặc domain riêng biệt

Nếu bạn đang sử dụng một tên miền www.tenmienvidu.com, bạn có thể lưu trữ các nội dung tĩnh như hình ảnh, tập tin JS và CSS trên một subdomain như static.tenmienvidu.com. Nếu bạn đang sử dụng tên miền cấp cao tenmienvidu.com, bạn cần phải sử dụng một tên miền khác để phục vụ cho các nội dung tĩnh như static-tenmienvidu.com.

Tại sao? Cookie được tạo ra cho domain tenmienvidu.com chắc chắn nó cũng tồn tại trên tất cả các subdomain khác như bao gồm *.tenmienvidu.com. Vì vậy nếu bạn sử dụng một subdomain static.tenmienvidu.com cho tenmienvidu.com, điều đó là vô ích. Tuy nhiên, các cookie tạo ra cho domain www.tenmienvidu.com (bao gồm *.tenmienvidu.com), bạn có thể sử dụng subdomain static.tenmienvidu.com để phục vụ cho các nội dung tĩnh mà không có bất kỳ cookie nào từ www.tenmienvidu.com.

Thiết lập cookie cho domain

Nếu bạn sử dụng domain www.tenmienvidu.com và phục vụ nội dung tĩnh từ một subdomain như static.tenmienvidu.com. Bạn cần phải chắc chắn rằng tất cả cookie được thiết lập cho www.tenmienvidu.com không có bất kỳ cookie nào được thiết lập cho tenmienvidu.com.

Đi đến Performance > CDN và chọn Set cookie domain to “www.tenmienvidu.com” nếu bạn đang dùng plugin W3 Total Cache cho WordPress hoặc thêm vào wp-config.php đoạn define( 'COOKIE_DOMAIN', 'www.tenmienvidu.com' );.

Đối với Google Analytics, bạn nên sử dụng cookieDomain thay vì auto như sau:

<script>
(function(i,s,o,g,r,a,m){i[‘GoogleAnalyticsObject’]=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,’script’,’//www.google-analytics.com/analytics.js’,’ga’);

ga(‘create’, ‘UA-51439374-1’, {‘cookieDomain’: ‘www.tenmienvidu.com’});
ga(‘send’, ‘pageview’);

</script>

MaxCDN, Amazon Cloudfront và nhiều dịch vụ CDN khác cũng cung cấp subdomain riêng nếu như bạn đang sử dụng domain cấp cao tenmienvidu.com và không cần phải mua thêm một domain khác. Cookie của CloudFlare liên quan đến vấn đề bảo mật và bạn không thể loại bỏ các cookie này.

Đây là một khuyến nghị được đưa ra bởi YSlow. Bạn có thể cài đặt addons này hoặc kiểm tra tại GTmetrix ở mục Use cookie-free domains.

Chặn robots.txt cho CDN để tránh việc trùng lặp nội dung

Khi sử dụng Origin Pull CDN, các máy chủ CDN sẽ tạo ra một bản sao nội dung từ một địa chủ URL gốc và chỉ khác nhau ở URL. Nội dung trang web của bạn sẽ nằm ở hai URL và hai máy chủ khác nhau, việc trùng lặp nội dung như vậy là một vấn đề lớn ảnh hưởng đến xếp hạng SEO của bạn.

Làm thế nào để khắc phục việc trùng lặp nội dung giữa URL gốc và CDN? Ở đây mình sẽ chặn tất cả các URL của CDN bằng robots.txt trừ các nội dung tĩnh như hình ảnh, tập tin JS và CSS. Bạn không được chặn các tài nguyên JS và CSS vì Google yêu cầu để xem những tài nguyên này. Tất nhiên là các tài nguyên hình ảnh cũng không được chặn để bạn có thể SEO hình ảnh và để trang web bạn có thể xuất hiện trong các công cụ tìm kiếm bằng hình ảnh.

Chú ý: Bạn không nhất thiết phải chặn bằng robots.txt nếu như bạn chỉ định một URL gốc bằng cách sử dụng canonical URL. Tuy nhiên, chặn các URL thông qua robots.txt sẽ tránh việc các công cụ tìm kiếm nạp các nội dung này dẫn đến hao tổn tài nguyên một cách vô ích.

Đối với các dịch vụ CDN không cung cấp các tùy chọn để tạo file robots.txt cho CDN, bạn cần phải tạo nó trên host của bạn. Để tạo được hai file robots.txt cho URL gốc và CDN, bạn cần phải sử dụng mod_rewrite (Apache) hoặc rewrite trong Nginx.

  1. Tạo một file robots_disallow.txt cùng một thư mục root với robots.txt để sử dụng cho CDN và chặn tất cả trừ những thư mục chứa hình ảnh, JS và CSS

    User-Agent: *
    Allow: /wp-content/
    Allow: /*sitemap*.xml
    Allow: /wp-includes/js/
    Allow: /wp-includes/css/
    Allow: /wp-includes/images/
    Disallow: /

  2. Thêm đoạn mã sau vào file .htaccess nếu bạn đang sử dụng Apache:

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*robots\.txt.*\ HTTP/ [NC]
    RewriteCond %{HTTP_HOST} ^static.tenmienvidu.com$ [NC]
    RewriteRule ^robots\.txt /robots_disallow.txt [NC,L]
    </IfModule>

    Thêm đoạn mã sau đây vào virtual host trong file nginx.conf nếu bạn đang sử dụng Nginx (sửa lại dấu ngoặc kép nếu copy bị nghiêng):

    location ~ /robots.txt
    {
    if ($host = “static.tenmienvidu.com“) {
    rewrite ^/robots\.txt /robots_disallow.txt last;
    }
    }

Ở đoạn mã trên, nếu URL là static.tenmienvidu.com/robots.txt thì sẽ lấy nội dung file robots_disallow.txt. Bây giờ hãy thử truy cập vào robots.txt trên CDN và URL gốc của bạn xem sao.

Sử dụng canonical URL để chỉ định một địa chỉ URL gốc

Canonical URL là một thuộc tính quan trọng giúp các trang web có nhiều nội dung trùng lặp trên nhiều URL khác nhau. Bạn có thể có nhiều URL trùng lặp nội dung mà không ảnh hướng tới xếp hạng SEO bằng cách chỉ định một canonical URL (URL kinh điển).

Đây là một yếu tố đặc biệt quan trọng trong SEO để loại bỏ việc trùng lặp nội dung nếu như bạn sử dụng CDN hoặc sử dụng nhiều tên miền cho một trang web. Nếu bạn sử dụng canonical URL, bạn không cần phải chặn robots.txt cho các domain phụ hoặc CDN.

Ví dụ bạn sử dụng subdomain static.tenmienvidu.com và trỏ về domain www.tenmienvidu.com, nếu như bạn khai báo một canonical URL là www.tenmienvidu.com, cũng như bạn nói với các công cụ tìm kiếm rằng: “www.tenmienvidu.com là URL gốc của tôi!” và các công cụ tìm kiếm sẽ hướng đến canonical URL của bạn mà không cho rằng đây là trùng lặp nội dung.

Bạn cần phải sử dụng thuộc tính rel=”canonical” trong HTML của bạn:

<link rel=”canonical” href=”http://www.tenmienvidu.com” />
<link rel=”canonical” href=”http://www.tenmienvidu.com/chuyen-muc/vi-du/” />

Thuộc tính này được bật sẵn trên plugin Yoast SEO cho WordPress.

Đối với các nội dung tĩnh cũng như thế. Bạn cũng cần khai báo một Canonical URL nếu như bạn sử dụng CDN để tránh việc trùng lặp nội dung. Tuy nhiên đối với các tập tin tĩnh, bạn không thể thêm vào thuộc tính cho HTML như trên. Vì vậy mình sẽ thiệt lập thuộc tính canonical thông qua HTTP header.

Thêm đoạn sau đây vào file .htaccess nếu bạn đang sử dụng Apache:

<FilesMatch “\.(asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|eot|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|json|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|otf|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|svg|svgz|swf|tar|tif|tiff|ttf|ttc|wav|wma|wri|woff|xla|xls|xlsx|xlt|xlw|zip|ASF|ASX|WAX|WMV|WMX|AVI|BMP|CLASS|DIVX|DOC|DOCX|EOT|EXE|GIF|GZ|GZIP|ICO|JPG|JPEG|JPE|JSON|MDB|MID|MIDI|MOV|QT|MP3|M4A|MP4|M4V|MPEG|MPG|MPE|MPP|OTF|ODB|ODC|ODF|ODG|ODP|ODS|ODT|OGG|PDF|PNG|POT|PPS|PPT|PPTX|RA|RAM|SVG|SVGZ|SWF|TAR|TIF|TIFF|TTF|TTC|WAV|WMA|WRI|WOFF|XLA|XLS|XLSX|XLT|XLW|ZIP)$”>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule .* – [E=CANONICAL:http://www.tenmienvidu.com%{REQUEST_URI},NE]
RewriteCond %{HTTPS} =on
RewriteRule .* – [E=CANONICAL:https://www.tenmienvidu.com%{REQUEST_URI},NE]
</IfModule>
<IfModule mod_headers.c>
Header set Link “<%{CANONICAL}e>; rel=\”canonical\””
</IfModule>
</FilesMatch>

Nếu bạn đang sử Nginx, thêm đoạn sau đây vào virtual host trong file nginx.conf:

location ~ \.(asf|asx|wax|wmv|wmx|avi|bmp|class|divx|doc|docx|eot|exe|gif|gz|gzip|ico|jpg|jpeg|jpe|json|mdb|mid|midi|mov|qt|mp3|m4a|mp4|m4v|mpeg|mpg|mpe|mpp|otf|odb|odc|odf|odg|odp|ods|odt|ogg|pdf|png|pot|pps|ppt|pptx|ra|ram|svg|svgz|swf|tar|tif|tiff|ttf|ttc|wav|wma|wri|woff|xla|xls|xlsx|xlt|xlw|zip|ASF|ASX|WAX|WMV|WMX|AVI|BMP|CLASS|DIVX|DOC|DOCX|EOT|EXE|GIF|GZ|GZIP|ICO|JPG|JPEG|JPE|JSON|MDB|MID|MIDI|MOV|QT|MP3|M4A|MP4|M4V|MPEG|MPG|MPE|MPP|OTF|ODB|ODC|ODF|ODG|ODP|ODS|ODT|OGG|PDF|PNG|POT|PPS|PPT|PPTX|RA|RAM|SVG|SVGZ|SWF|TAR|TIF|TIFF|TTF|TTC|WAV|WMA|WRI|WOFF|XLA|XLS|XLSX|XLT|XLW|ZIP)(\.gz)?(\?.*)?$ {
add_header Link “<$scheme://www.tenmienvidu.com$request_uri>; rel=\”canonical\””;
}

Sử dụng canonical URL

Bây giờ bạn có thể kiểm tra HTTP header trên một hình ảnh bất kỳ của CDN để xem nó hoạt động hay chưa.

Vậy là website của bạn đã được tối ưu hóa bằng cách sử dụng CDN mà không cần lo lắng tới các vấn đề về SEO như trùng lặp nội dung rồi. Chúc bạn thành công!

Thích hoặc chia sẽ bài này