1. Hiện tại có một số member mạo danh BQT để giao dịch trên diễn đàn và đã LỪA ĐẢO khá nhiều tại chuyên mục Adwords... Mọi người cảnh giác và đọc bài: Giới thiệu giao dịch đảm bảo bởi @Admin

Code tăng tốc độ load website

Thảo luận trong 'Hỗ trợ về mã nguồn, code' bắt đầu bởi raovathieuqua2, 15/3/14.

Lượt xem: 2,061
  1. raovathieuqua2

    raovathieuqua2 Top 9

    Gia nhập:
    29/9/13
    Bài viết:
    290
    Đã được thích:
    18
    Web:
    Chào các bạn.


    Mình viết bài viết này với mục tiêu chia sẻ code tăng tốc độ load nhằm tối ưu hóa website tốt hơn. Một trong những yếu tố góp phần google index nhanh website của bạn.
    [​IMG]Về ý tưởng tăng tốc độ load website, mình xin mô tả là đoạn code này dựa trên yếu tố trình duyệt là chủ yếu. Nội dung website khi đã load 1 lần rồi, thì nó sẽ lưu lại dữ liệu là các tập tin javascript, hình ảnh (gif, png, jpg), css,... Ngoài việc lưu lại các tập tin này, thì nó sẽ còn gia tăng chỉ số expires của các tập tin, giúp nó lưu vào trình duyệt lâu hơn.


    Bạn cần tạo 3 tập tin sau:


    .htaccess (với nội dung):
    Mã:
    ExpiresActive on
    Mã:
    [COLOR=#141414][FONT=Georgia]ExpiresDefault "access plus 1 months"[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]ExpiresByType image/jpg "access plus 1 months"[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]ExpiresByType image/gif "access plus 1 months"[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]ExpiresByType image/jpeg "access plus 1 months"[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]ExpiresByType image/png "access plus 1 months"[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]ExpiresByType text/css "access plus 1 months"[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]ExpiresByType text/javascript "access plus 1 months"[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]ExpiresByType application/javascript "access plus 1 months"[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]ExpiresByType application/x-shockwave-flash "access plus 1 months"[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]# Enable gzip (deflate) compression[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]AddOutputFilterByType DEFLATE text/html text/css application/x-javascript[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]RewriteEngine On[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]####Charset[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]AddDefaultCharset Off[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]####Gzip[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]<IfModule mod_rewrite.c>[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]RewriteCond %{REQUEST_FILENAME} -f[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]RewriteRule ^(.*)(js|css)$ redir.php?file=$1$2&type=$2 [L][/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]</IfModule>[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]####ETags[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]FileETag None[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]####Expires[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]<IfModule mod_expires.c>[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]ExpiresActive On[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]ExpiresByType image/gif A2592000[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]ExpiresByType image/jpeg A2592000[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]ExpiresByType image/png A2592000[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]ExpiresByType application/x-shockwave-flash A2592000[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]ExpiresByType text/css A2592000[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]ExpiresByType application/x-javascript A2592000[/FONT][/COLOR]
    pre.php (với nội dung):
    Mã:
    <?php
    Mã:
    [COLOR=#141414][FONT=Georgia]$path = pathinfo($_SERVER['SCRIPT_NAME']);[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]if ($path['extension'] == 'css')  {[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]  header('Content-type: text/css');[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]}[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]if ($path['extension'] == 'js')  {[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]  header('Content-type: application/x-javascript');[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]}[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]?>[/FONT][/COLOR]
    redir.php (với nội dung):
    Mã:
    <?php
    Mã:
    [COLOR=#141414][FONT=Georgia]# this is the file redir.php, to gzip javascript and css[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]# set the request file name[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]$file=str_replace(chr(0x0),"",$_REQUEST['file']);[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]$allowedfiles = array('js','gif','png','jpg','css','txt','swf');[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]if (!in_array(str_replace(chr(0x2E),"",substr(chr(0x2E).$file,-3)),$allowedfiles)){ exit ("Hacking attempt!"); }[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]# Set Expires, cache the file on the browse[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]header("Expires:".gmdate("D, d M Y H:i:s", time()+15360000)."GMT");[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]header("Cache-Control: max-age=315360000");[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]# set the last modified time[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]$mtime = filemtime($file);[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]$gmt_mtime = gmdate('D, d M Y H:i:s', $mtime) . ' GMT';[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]header("Last-Modified:" . $gmt_mtime);[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]# output a mediatype header[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]switch ($_REQUEST['type']){[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]  case 'css':[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]    header("Content-type: text/css");[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]    break;[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]  case 'js' :[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]    header("Content-type: text/javascript");[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]      break;[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]  default:[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]    header("Content-type: text/plain");[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]}[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]# echo the file's contents[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]echo implode('', file($file));[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]if(extension_loaded('zlib')){[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]  ob_end_flush();[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]  # set header the content's length;[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]  # header("Content-Length: ".ob_get_length()); # (It doesn't work? )[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]  ob_end_flush();[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]}[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]?>[/FONT][/COLOR]
    Để chạy pre.php thì chúng ta cần 1 tập tin trong hệ thống là php.ini có nhiệm vụ hoạt động ngầm, nhằm thực thi pre.php


    php.ini đặt tại thư mục root, có nội dung như sau:
    Mã:
    zlib.output_compression = on
    Mã:
    [COLOR=#141414][FONT=Georgia]zlib.output_compression_level = 3[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]zlib.output_handler = on[/FONT][/COLOR]
    [COLOR=#141414][FONT=Georgia]auto_prepend_file = "pre.php"[/FONT][/COLOR]


    Trong đoạn php.ini này mình đặt tỷ lệ nén ở mức trung bình là 3, tỷ lệ nén file có giá trị từ 0 đến 9 (9 là mức cao nhất). Đoạn code trên mình viết có tính năng lưu cache và sử dụng module nén là deflate, chứ nó chả đã động tới module zlib cũng là nén luôn nhé các bạn.


    Mình phân biệt giữa 2 module zlibmodule deflate cho các bạn nắm rõ:


    - module zlib: còn được gọi là PHP's zlib output_compression sẽ chỉ được chạy với lớp PHP handler (các files .php chẳng hạn)
    - module deflate: còn được gọi là Apache's mod_deflate có thể chạy với bất kỳ tập tin nào như jpg, css, javascript,...


    Mục đích tạo php.ini là nhằm nén các tập tin ở lớp PHP handler (.php) giúp bạn có 1 hệ thống nhanh hơn, khi vừa được nén các file sử lý php, nén luôn các tập tin (jpg, css, javscript,...) khi kết hợp nén với module deflate.


    Trong đoạn php.ini trên mình đã đặt mức nén ở level 3, và khi kiểm tra bằng phpinfo() kết quả sẽ như sau:
    [​IMG]PHP handler là cái gì ?
    Khi chạy một site PHP, server phải cần thông dịch PHP và tạo ra trang web khi người dùng truy cập vào. Tùy vào từng người dùng, thời gian địa điểm mà webiste có thể được tạo ra khác nhau. Code PHP được phiên dịch dựa vào bộ thư viện PHP như PHP4 và PHP5. PHP handler sẽ điều khiển quá trình những gì load lên từ bộ thư viện PHP.


    Đây là mô hình web server của chúng ta hoạt động, mọi thứ sẽ diễn ra thông qua lớp thông dịch là PHP, sau khi thông dịch web server sẽ trả về máy người dùng.


    Mục đích của mình là sẽ làm mọi thứ nhanh hơn khi qua lớp thông dịch PHP này, đây cũng là ý tưởng để mình viết bài này đó các bạn.


    [​IMG]
    P/S: Có một số bạn dùng Wordpress có sẵn các plugin, mình nghĩ nếu phân tích ra thì cũng chỉ nằm vỏn vẹn cho các module zlibmodule deflate thôi. Cái quan trọng là chúng ta hiểu về nó thế nào để còn làm việc, chứ không phải có gì là quất cái đó đâu nhé.


    Hãy thử và cảm nhận tốc độ load website của bạn nhé.


    Demo: Hội Quán Tin Học


    Nguồn sưu tần trên:
    Mã:
    http://forum.idichvuseo.com/threads/code-tang-toc-do-load-website.2152/



    Nguyên Nghĩa - Mr.N2

    Nguồn xem thêm : http://lapmangfpthcm.com/forum/threads/code-tăng-tốc-độ-load-website.207/

    vanluc88 thích bài này.
  2. 1141010025vt

    1141010025vt Seo Newbie

    Gia nhập:
    14/3/14
    Bài viết:
    6
    Đã được thích:
    0
    Mình áp dụng mấy cách tăng tốc độ , phá băng thông mà cũng trả hữu ích mấy . Chệp chệp
  3. ducquyen01

    ducquyen01 Top 9

    Gia nhập:
    1/1/14
    Bài viết:
    90
    Đã được thích:
    2
    Mình không thạo code cái phần này đành phải nhờ bên thiết kế web vậy. Chỉ cần giảm dung lượng ảnh là web nhẹ hơn nhiều rồi
  4. thanhan25

    thanhan25 Top 9

    Gia nhập:
    5/3/14
    Bài viết:
    106
    Đã được thích:
    6
    Tối ưu hóa cũng là tốt cơ mà ngại nhất là động vào file *.htaccess
  5. thietkewebdeal

    thietkewebdeal Top 9

    Gia nhập:
    30/12/13
    Bài viết:
    72
    Đã được thích:
    2
    Web:
    Vậy có hơn khi mình cached lại ko nhỉ? Chứ kiểu này thấy xử lý nhiều quá :(
  6. anhlt86hn

    anhlt86hn Top 9

    Gia nhập:
    10/1/14
    Bài viết:
    42
    Đã được thích:
    1
    Nơi ở:
    Hà Nội
    chỉ có php thôi à bạn? thiên vị quá, nếu có asp.net thì tốt...
  7. monksicklove

    monksicklove Top 9

    Gia nhập:
    9/9/13
    Bài viết:
    54
    Đã được thích:
    2
    Nơi ở:
    HCM
    Web:
    Nếu tối ưu cái này tốt thế nào cũng có 1 lượng lớn visit và từ khóa mau lên top gg
  8. shadow12

    shadow12 Top 9

    Gia nhập:
    27/2/14
    Bài viết:
    46
    Đã được thích:
    1
    Web:
    Mình thấy cái này cũng đâu có giúp web của mình nhanh hơn được lắm đâu bạn :(
  9. appmobile

    appmobile Seo Newbie

    Gia nhập:
    23/3/14
    Bài viết:
    12
    Đã được thích:
    0
    Web:
    chỉ cần chèn vào là tăng tốc độ à bạn? mình tưởng phải tối ưu lại code thì mới tăng được chứ

Nội quy khi thảo luận:

Dù bạn có cố tình spam bằng cách nào khi BQT diễn đàn phát hiện sẽ lập tức banned nick và xoá toàn bộ bài viết của bạn. Ngoài ra khi phát hiện ra Spam hãy gửi thông báo cho BQT diễn đàn. Hãy suy nghĩ trước khi hành động..!
✓ Khi muốn trả lời ai đó, bạn gõ @ cộng thêm nick diễn đàn của người đó phía sau @, giống như tag tên trên Facebook.
✓ Yêu cầu khi bình luận, bạn phải gõ chữ rõ ràng, không viết tắt, gõ tiếng Việt đầy đủ dấu câu.
✓ Nên dùng font chữ mặc định của diễn đàn, không tô màu lòe loẹt hay dùng size chữ quá lớn khi bình luận.
✓ Bài viết, comment... không được phép quảng cáo dịch vụ, rao vặt, pr... Loại trừ ở chuyên mục Rao vặt đã cho phép.
✓ Nghiêm cấm các chủ đề dạng: Cứu em với, help me, giật tít, câu view... dưới mọi hình thức.
✓ Tất cả các thành viên tham gia diễn đàn cần đọc kỹ Nội quy chung và nghiêm túc tuân thủ.


Chia sẻ trang này

Đang tải...