Với PHP được sử dụng trên nền tảng Linux là chủ yếu, hiệu suất của code PHP sẽ được tối ưu hoá nhất. Tuy nhiên, trong một số trường hợp đặc thù, với nhu cầu cần sử dụng cả hai PHP và ASP. Phải cần cài đặt sử dụng chung PHP và IIS trên Windows Server. Mà WordPress được viết bằng PHP, vậy nên bạn cần một số tối ưu hóa để máy chủ có thể chạy website mượt mà hơn, trong khi đó với Linux hoặc Apache thì bạn không cần làm thế.
Tốc độ tải trang là tốc độ tải nội dung của website khi ai đó truy cập một trang trên trang web của bạn. Tốc độ tải trang thể hiện thời gian tải của một trang cụ thể của website. Một trang web được tối ưu hóa về tốc độ không chỉ nâng cao phần User Experience mà còn có thể giúp tăng thứ hạng trên công cụ tìm kiếm của Google. Để giảm tỷ lệ thoát và tăng mức độ tương tác của khách truy cập, website của bạn phải tải nhanh chóng và liền mạch.
Trong bài viết này, tôi sẽ chia sẻ một số cách giúp cải thiện tốc độ trang web WordPress trên IIS. Phiên bản IIS tôi đang sử dụng là 8.
Cách tăng tốc trang web WordPress trên IIS
Thay đổi cách tệp tĩnh được lưu trong bộ nhớ Cache
Một trong những điều đầu tiên tôi làm khi bắt đầu viết blog này là thay đổi cách các tệp tĩnh được lưu trong bộ nhớ đệm của IIS để cải thiện tốc độ trang web. Tệp tĩnh là những thứ không thay đổi, những thứ như CSS, JavaScript, hình ảnh, tài liệu, v.v. Với IIS, điều này thực sự khá dễ thực hiện, bạn có thể bắt đầu bằng cách thực hiện thay đổi sau cho web.config của mình:
<system.webServer>
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" />
</staticContent>
</system.webServer>
Có một tập hợp các phần mở rộng tệp đã được ánh xạ tới staticContent – do đó IIS chỉ áp dụng thay đổi này cho tất cả các nội dung tĩnh. Ngoài ra, hãy lưu ý rằng chúng tôi đang lưu trữ đệm nội dung ở phía máy khách. Điều này có nghĩa là khách truy cập quay lại sẽ thấy hiệu suất tăng lên và chúng tôi lưu trữ đệm trong 7 ngày ở phía máy khách. Nếu bạn có các phần mở rộng tệp không nằm trong danh sách phần mở rộng staticContent chuẩn, bạn có thể dễ dàng thêm nó bằng cách thực hiện:
<staticContent>
<mimeMap fileExtension=".woff" mimeType="font/x-woff" />
</staticContent>
Nhưng còn việc cải thiện hiệu suất cho những người truy cập lần đầu thì sao? Có một thay đổi quan trọng mà bạn có thể thực hiện để thấy sự khác biệt đáng kể:
<urlCompression
doDynamicCompression="true"
doStaticCompression="true"
dynamicCompressionBeforeCache="true"/>
Tôi thực sự khuyên bạn nên đọc tài liệu IIS về urlCompression . Lần tới tôi sẽ nói về cách tôi sử dụng wp-supercache để cải thiện đáng kể hiệu suất cho cả khách truy cập lần đầu và khách truy cập quay lại.
Bật tính năng nén Gzip
Nén Gzip sẽ làm giảm thiểu tối đa thời gian phản hồi bằng cách giảm dung lượng tải về từ giao thức HTTP. Nó có thể nén các thành phần tĩnh trên website như CSS, Javascript, HTML nhưng trên lý thuyết và một số trường hợp, nó có thể làm việc cùng với XML và JSON. Các thành phần khác như hình ảnh, tài liệu PDF..v.v..có thể không cần sử dụng gzip vì bản thân nó đã được nén sẵn.
Trong file Global.asax.cs, thêm vào đoạn code:
protected void Application_PreRequestHandlerExecute(object sender, EventArgs e)
{
HttpApplication app = sender as HttpApplication;
string acceptEncoding = app.Request.Headers["Accept-Encoding"];
Stream prevUncompressedStream = app.Response.Filter;
if (app.Context.CurrentHandler == null)
return;
if (!(app.Context.CurrentHandler is System.Web.UI.Page ||
app.Context.CurrentHandler.GetType().Name == "SyncSessionlessHandler") ||
app.Request["HTTP_X_MICROSOFTAJAX"] != null)
return;
if (acceptEncoding == null || acceptEncoding.Length == 0)
return;
acceptEncoding = acceptEncoding.ToLower();
if (acceptEncoding.Contains("deflate") || acceptEncoding == "*")
{
// deflate
app.Response.Filter = new DeflateStream(prevUncompressedStream,
CompressionMode.Compress);
app.Response.AppendHeader("Content-Encoding", "deflate");
}
else if (acceptEncoding.Contains("gzip"))
{
// gzip
app.Response.Filter = new GZipStream(prevUncompressedStream,
CompressionMode.Compress);
app.Response.AppendHeader("Content-Encoding", "gzip");
}
}
Sau đó trong web.config các bạn thêm vào trong <system.Webserver>…</system.Webserver> đoạn code:
<httpCompression>
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll"/>
<dynamicTypes>
<add mimeType="text/*" enabled="true"/>
<add mimeType="message/*" enabled="true"/>
<add mimeType="application/javascript" enabled="true"/>
<add mimeType="*/*" enabled="false"/>
</dynamicTypes>
<staticTypes>
<add mimeType="text/*" enabled="true"/>
<add mimeType="message/*" enabled="true"/>
<add mimeType="application/javascript" enabled="true"/>
<add mimeType="*/*" enabled="false"/>
</staticTypes>
</httpCompression>
Sau khi thực hiện nén GZIP, các bạn có thể truy cập vào checkgzipcompression.com để kiểm tra.
Một số cách bổ sung
- Bật tính năng nén compressio trong iis.
- Cài đặt Wincache - cài đặt phiên bản mới nhất
- Hãy chắc chắn rằng bạn đang chạy phiên bản PHP 5 không có luồng
- Trên trình quản lý IIS, bật chức năng lưu trữ đệm đầu ra.
Chúc bạn thành công!
0 Nhận xét