Apache-2.2

如何記憶體我的網站?

  • March 6, 2016

我對記憶體網站沒有幾個問題,因為我以前沒有嘗試過記憶體網站。

首先是如何記憶體站點,以便在客戶端瀏覽站點時載入速度更快。例如,我的 css 樣式中有很多圖像,如何記憶體它?

從我在 php 中記憶體之前讀到的內容是通過<head>標籤完成的,並且記憶體也可以在.htaccess(很高興我使用 htaccess ^_^)中完成。

我在標題中添加了這個標籤

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta http-equiv="expires" content="-1">
<meta http-equiv="pragma" content="no-cache">//or content="cache"???

這也是我的 htaccess 裡面的內容:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php?/$1 [L]

RewriteCond %{REQUEST_URI} ^application.*
RewriteRule ^(.*)$ /index.php?/$1 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

</IfModule>

<IfModule !mod_rewrite.c>    
   ErrorDocument 404 /index.php
</IfModule>

記憶體很少是一種“插入式”解決方案,但如果實施得當,它可以顯著提高網站的速度。

您提到的第一項“大量 CSS 圖像” - 本身不是伺服器問題。為了獲取這些,瀏覽器必須對每個圖像發出請求,每個圖像都有自己的成本。將圖像組合成一個 CSS sprite,這樣您就可以最大限度地減少請求數量並最大限度地提高您選擇的圖像格式所應用的壓縮率。類似的想法適用於 CSS 和 JS 文件 - 盡可能合併和縮小。對於網站特定的建議,請嘗試 Google 的 Pagespeed 或 Yahoo 的 YSlow。

在伺服器端,有許多 PHP 記憶體將儲存已翻譯腳本的中間形式 - 操作碼記憶體。最常用的一種是 APC,但也經常使用 xcache 和 eaccelerator(只使用其中一種)。

從 PHP 方面來看,記憶體通常涉及生成內容的靜態副本。這可以使用輸出緩衝(ob_* 函式(例如 ob_start())來實現。在發送任何內容之前開始緩衝,在頁面完全建構後結束緩衝並將結果內容保存到文件中。然後檢查在嘗試 PHP 腳本之前存在這樣的文件(即,如果記憶體存在,則提供該文件,否則載入腳本)。

此外,您可以在 Web 堆棧中添加額外的層 - Varnish 是一種流行的選擇。它是一個反向代理和記憶體伺服器。本質上,Varnish 接收到後端伺服器的請求,如果它已經有頁面的副本,它將直接提供它 - 繞過後端。如果它沒有請求的副本,它將把它傳遞給後端。Varnish 可以配置為將其記憶體直接儲存在記憶體中,或者可以使用磁碟支持的儲存,並且它的工作效率很高。

與任何記憶體方法一樣,您都面臨著洩露敏感資訊的潛在問題——如果您記憶體了一個應該只對登錄使用者可見的頁面並最終將其提供給未經身份驗證的使用者,那麼您就有問題了。因此,像 Varnish 這樣的伺服器往往不會記憶體任何包含 cookie 的請求——這是在嘗試實際實現高命中率時需要考慮的重要因素。

另一個可能的考慮是使用內容分發網路 - 一種服務,其網路邊緣位置在地理上更靠近您的使用者,以便可以更快地處理多個請求 - 通常,這更多是針對大文件的考慮 - 如果您正在服務許多小文件(例如圖像),您可能可以改進您的網站設計。

引用自:https://serverfault.com/questions/369422