將記憶體快取用於工作階段儲存

Memcached是一種通用分散式記憶體快取系統。 它通常用來加速動態資料庫驅動的網站,方法是在RAM中快取資料和物件,以減少必須讀取外部資料來源(例如資料庫或API)的次數。

Memcached提供大型雜湊表,可以分佈在多部機器上。 當表格已滿時,後續的插入會以最近最少使用的(LRU)順序清除較舊的資料。 此雜湊表格的大小通常非常大。 (Source: memcached.org)

Commerce會將memcached用於工作階段儲存,但不會用於頁面快取。 針對頁面快取,我們建議RedisVarnish

若要設定Commerce使用memcached

  1. 在文字編輯器中開啟<your install dir>/app/etc/env.php

  2. 找出下列專案:

    code language-php
    'session' =>
        array (
        'save' => 'files',
    ),
    
  3. 請依照以下步驟變更:

    code language-php
    'session' =>
        array (
          'save' => 'memcached',
          'save_path' => '<memcache ip or host>:<memcache port>'
    ),
    

    memcached有本指南範圍以外的選擇性啟動引數。 您可以在memcached檔案、原始程式碼和變更記錄檔中找到有關它們的詳細資訊。

  4. 繼續下一節。

若要驗證memcached是否適用於Commerce

  1. 刪除Commerce安裝目錄下下列目錄的內容:

    code language-bash
    rm -rf var/cache/* var/page_cache/* var/session/*
    
  2. 前往店面上的任何頁面。

  3. 登入「管理員」並瀏覽至數個頁面。

    如果沒有顯示錯誤,恭喜您! memcached正在運作! 您可以選擇檢視記憶體快取儲存體,如同下個步驟所述。

    如果顯示錯誤(例如HTTP 500 (內部伺服器錯誤)),請啟用開發人員模式並診斷問題。 請確定memcached正在執行、設定正確,而且env.php沒有語法錯誤。

  4. (選擇性。) 使用Telnet檢視記憶體快取儲存體。

    code language-bash
    telnet <memcached host or ip> <memcached port>
    
    code language-bash
    stats items
    

    結果顯示類似以下內容:

    code language-none
    STAT items:3:number 1
    STAT items:3:age 7714
    STAT items:3:evicted 0
    STAT items:3:evicted_nonzero 0
    STAT items:3:evicted_time 0
    STAT items:3:outofmemory 0
    STAT items:3:tailrepairs 0
    
    [Look at the keys in more detail](https://darkcoding.net/software/memcached-list-all-keys/)
    
recommendation-more-help
386822bd-e32c-40a8-81c2-ed90ad1e198c