Vấn đề website hiện nay là lượng người truy cập vào trang web, một người thiết kế web,phải tối ưu nhất trang web mà họ đã và đang làm, phải làm sao để trang web có tốc độ truy cập nhanh, trang web không quá nặng,v.v..... Vì vậy, bài viết này sẽ giúp các bạn tăng tốc, cải thiện và tối ưu hóa code PHP.
Với những
website vừa và nhỏ thì việc cải thiện này không đáng kể lắm. Tuy nhiên, với
những website lớn và có lượng truy cập nhiều thì nó sẽ cải thiện rất nhiều hiệu
năng của ứng dụng. Bên cạnh đó bạn còn cải thiện được kỹ năng lập trình của
chính mình
Nếu một
phương pháp có thể được khai báo static thay vì protected hoặc private chúng ta
tùy theo yêu cầu nhưng nên để static để cải thiện tốc độ truy xuất đến hàm.
Trường hợp hàm đó bạn cấm truy xuất từ bên ngoài thì bắt buộc phải để private.
Dùng echo
nhiều lần sẽ nhanh hơn nối chuỗi, vì trong thuật toán nối chuỗi sẽ mất thời
gian xử lý của hệ thống, vì trong nối chuỗi có xử lý thêm các biến trong chuỗi,
các ký tự đặc biệt...
Đặt
maxvalue cho cho các vòng lặp không xác định để tránh trường hợp lặp vô hạn.
Nên hủy các
biến sau khi sử dụng.
Tránh sử
dụng nhiều các phương thức __get, __set, __autoload
require_once
() là tốn kém hơn require , include_once cũng tốn kém hơn include
Sử dụng
đường dẫn đầy đủ trong đường dẫn đến file yêu cầu sẽ tốn ít thời gian gian xử
lý của hệ thống để tìm đúng đường dẫn yêu cầu.
Nếu bạn cần
phải tìm ra thời gian khi các script bắt đầu thực hiện, $ _SERVER
['REQUEST_TIME'] được ưa thích để sử dụng.
Xem nếu bạn
có thể sử dụng strncasecmp, strpbrk và stripos thay vì regex thì đó là 1 điều
tốt, str_replace nhanh hơn preg_replace, nhưng strtr nhanh hơn str_replace .
Nếu chức năng, chẳng hạn như chức năng thay thế chuỗi, chấp nhận cả hai mảng và
các nhân vật duy nhất như các đối số, và nếu danh sách đối số của bạn không
phải là quá dài, xem xét việc viết một báo cáo thay thế dự phòng, đi qua một
trong những nhân vật tại một thời điểm, thay vì một dòng mã chấp nhận mảng là
đối số tìm kiếm và thay thế.
Nó tốt hơn
để sử dụng báo cáo chuyển đổi hơn nhiều nếu, nếu người nào khác, báo cáo.
Lỗi ức chế
với @ là rất chậm. Không nên dấu lỗi bằng cách để @ như vậy.
Bật
mod_deflate apache
Đóng kết
nối cơ sở dữ liệu của bạn khi bạn đang không thực hiện xử lý.
$ Row
['id'] là 7 lần nhanh hơn $ row [id]
Sử dụng try
catch để bắt lỗi và thông báo lỗi là tốt hơn để hệ thống báo lỗi.
Không sử
dụng các chức năng bên trong vòng lặp, chẳng hạn như cho ($ x = 0; $ x
<count ($ mảng); $ x), bởi vì các phép tính trong vòng lặp sẽ được lặp lại
mỗi lần chạy.
Sử dụng
biến cục bộ trong 1 phương thức lớp sẽ nhanh hơn. Gần giống như gọi một biến
địa phương trong một hàm.
Sử dụng một
biến toàn cầu(global) là 2 lần chậm hơn so với một var địa phương.
Tăng một
tài sản đối tượng (ví dụ: $ this-> prop + +) là 3 lần chậm hơn so với một
biến địa phương.
Tăng một
biến địa phương không xác định là 9-10 lần chậm hơn so với trước khi khởi tạo.
Chỉ cần
khai báo một biến toàn cầu mà không sử dụng nó trong một hàm cũng chậm việc xử
lý (bằng chi phí tương tự như khai báo sử dụng một biến var địa phương). PHP có
thể sẽ kiểm tra để xem liệu toàn cầu tồn tại.
Phương pháp
gọi xuất hiện để được độc lập với số lượng các phương pháp được định nghĩa
trong lớp vì tôi bổ sung thêm 10 phương pháp thử nghiệm lớp học (trước và sau
khi các phương pháp thử nghiệm) không có thay đổi trong hoạt động.
Phương pháp
trong các lớp học có nguồn gốc chạy nhanh hơn so với những người được định
nghĩa trong lớp cơ sở.
Một cuộc
gọi chức năng với một tham số và chức năng một cơ thể trống rỗng mất khoảng
thời như làm 7-8 $ localvar + + hoạt động. Một cuộc gọi phương pháp tương tự
của khóa học khoảng 15 $ localvar + + hoạt động.
Xung quanh
chuỗi của bạn bằng cách thay vì "sẽ làm cho mọi việc giải thích một chút
nhanh hơn vì php trông cho biến bên trong "..." nhưng không phải bên
trong '...'. Tất nhiên bạn chỉ có thể làm điều này khi bạn không cần phải có
biến trong chuỗi.
Khi lặp lại
chuỗi nó nhanh hơn để tách chúng bằng dấu phẩy thay vì các dấu chấm. Lưu ý:
Điều này chỉ làm việc với echo, mà là một chức năng có thể mất một số dây như
các đối số.
Một kịch
bản PHP sẽ được phục vụ ít nhất 2-10 lần chậm hơn so với một trang HTML tĩnh
bởi Apache. Hãy thử sử dụng các trang HTML tĩnh hơn và các kịch bản ít hơn.
PHP kịch
bản được biên dịch lại mỗi lần trừ khi kịch bản được lưu trữ. Cài đặt một sản
phẩm bộ nhớ đệm PHP thường gia tăng hiệu suất 25-100% bằng cách loại bỏ thời
gian biên dịch.
Bộ nhớ
cache như nhiều càng tốt. Sử dụng memcached - memcached là một bộ nhớ hệ thống
hiệu năng cao đối tượng bộ nhớ đệm nhằm mục đích để tăng tốc độ ứng dụng web
động bằng cách giảm tải cơ sở dữ liệu. OP cache mã là hữu ích để kịch bản của
bạn không có được biên soạn trên mọi yêu cầu
Khi làm
việc với chuỗi và bạn cần phải kiểm tra xem chuỗi, hoặc là của một độ dài nhất
định bạn sẽ dễ hiểu sẽ muốn sử dụng strlen () chức năng. Chức năng này là khá
nhanh chóng kể từ khi hoạt động của nó không thực hiện bất kỳ tính toán nhưng
chỉ trả lại chiều dài đã được biết đến của một chuỗi có sẵn trong cơ cấu zval
(nội C struct được sử dụng để lưu trữ các biến trong PHP). Tuy nhiên vì strlen
() là một chức năng nó vẫn còn hơi chậm vì các cuộc gọi chức năng yêu cầu các
hoạt động như chữ thường & hashtable tra cứu tiếp theo là thực hiện chức
năng nói. Trong một số trường hợp, bạn có thể cải thiện tốc độ của mã của bạn
bằng cách sử dụng một thủ thuật isset ().
Ex.
PHP Code:
if (strlen
($ foo) <5) {echo "Foo là quá ngắn";}
vs.
PHP Code:
if (isset
($ foo {5})) {echo "Foo là quá ngắn";}
Gọi isset
() sẽ xảy ra là nhanh hơn sau đó strlen () bởi vì không giống như strlen (),
isset () là một ngôn ngữ xây dựng và không phải là một ý nghĩa chức năng mà nó
thực hiện không không yêu cầu tra cứu chức năng và chữ thường. Điều này có
nghĩa là bạn hầu như không có chi phí trên đầu trang của mã thực tế để xác định
chiều dài của chuỗi.
Khi incrementing
hoặc decrementing giá trị của biến $ i + + sẽ xảy ra là một chút chậm hơn sau
đó + + $ i. Đây là cái gì PHP cụ thể và không áp dụng các ngôn ngữ khác, do đó,
không đi sửa đổi C của bạn hoặc mã Java suy nghĩ nó đột nhiên sẽ trở nên nhanh
hơn, nó sẽ không. + + $ I sẽ xảy ra nhanh hơn trong PHP bởi vì thay vì 4
opcodes sử dụng với $ i + + bạn chỉ cần 3. Bài viết incrementation thực sự gây
ra trong việc tạo ra các một var tạm thời sau đó được tăng lên. Trong khi trước
incrementation làm tăng giá trị ban đầu trực tiếp. Đây là một trong những tối
ưu hóa mà opcode tối ưu hóa như tối ưu hóa PHP của Zend. Nó là một vẫn là một ý
tưởng tốt để giữ trong tâm trí vì không phải tất cả các tối ưu hóa opcode thực
hiện tối ưu hóa này và có rất nhiều các nhà cung cấp dịch vụ Internet và máy
chủ đang chạy mà không có một ưu hoa opcode.
Không phải
tất cả mọi thứ đã được OOP, thường nó là quá nhiều chi phí, mỗi phương pháp và
kêu gọi đối tượng tiêu thụ rất nhiều bộ nhớ.
Không thực
hiện tất cả các cấu trúc dữ liệu như một lớp học, mảng là hữu ích, quá
Không phân
chia các phương pháp quá nhiều, tôi nghĩ, mà code bạn sẽ thực sự tái sử dụng
Bạn luôn
luôn có thể chia nhỏ mã của một phương pháp sau này, khi cần thiết hãy sử dụng
các chức năng được xác định trước vô số
Nếu bạn có
chức năng tiêu tốn rất nhiều thời gian trong mã của bạn, hãy xem xét viết chúng
như phần mở rộng C
Tả sơ lược
mã của bạn. Profiler cho bạn thấy, các phần của mã của bạn tiêu thụ bao nhiêu
lần. Trình gỡ lỗi Xdebug đã có chứa một hồ sơ. Hồ sơ cho thấy bạn tắc nghẽn
trong tổng quan
mod_gzip có
sẵn như là một module Apache nén dữ liệu của bạn trên bay và có thể làm giảm dữ
liệu truyền lên đến 80%
Tin khác:
0 nhận xét:
Đăng nhận xét