日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【转】1.5 运行原理剖析

發布時間:2023/12/10 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转】1.5 运行原理剖析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我們不講底層架構,核心原理,太枯燥,也記不住,沒必要。
畢竟不是人人都要當架構師。

我們從M2的模式說起。
理解了他的模式,就知道了他的原理。

M2有3種模式,

  • 默認模式(default)
  • 開發模式(developer)
  • 生產模式(production)
  • 默認模式

    安裝完成后,就是默認模式。
    它跟生產模式差不多.
    最大的不同是,
    默認模式可以在后臺清緩存,生產模式不能。
    它帶有一點靈活性。

  • 錯誤不顯示在頁面上,錯誤記錄到項目的var/report里
  • 開啟靜態緩存文件,也就是說讀取的靜態緩存文件,在pub/static里
  • 默認模式未針對生產環境進行優化,主要原因是靜態文件是動態生成(先創建靜態文件再緩存)。而生產模式是用命令行工具生成的靜態文件,不是動態生成。所以默認模式的性能沒有生產模式好。
  • 可以在后臺開啟/禁用/刷新緩存
  • 開發模式

    顧名思義,就是開發測試用的。

  • 錯誤直接顯示在頁面上
  • 關閉靜態緩存文件,每次頁面刷新都動態生成靜態文件到pub/static里
  • 可以在后臺開啟/禁用/刷新緩存
  • 可以在后臺設置瀏覽器編譯less
  • 生產模式

    線上站點都必須改成生產模式。

  • 錯誤不顯示在頁面上,錯誤記錄在項目的var/report里
  • 開啟靜態緩存文件,每次只從pub/static目錄讀取緩存文件,如果沒有的話 就報錯了。錯誤要在var/report里看。
  • 不能在后臺開啟/禁用/刷新緩存。
  • 要用命令行工具來生成靜態文件,生成在pub/static目錄下
    也就是說,生產模式為了加速,提高效率,一律只讀取pub/static下的靜態緩存文件。任何人都干擾不了它。
  • 總結

    說白了,默認模式就是個雞肋,食之無用,棄之可惜。

    我們只需要開發模式和生產模式就行。

    也就是說我們:

    在開發模式下開發測試。
    在生產模式下部署上線。

    開發模式下這樣設置
    //bbs.mallol.cn/?thread-148.htm

    因為默認模式和生產模式都強制性的讀取pub/static下的靜態緩存文件,所以就比較復雜了,每次修改內容都要清緩存并且重新生成靜態文件才生效。
    默認模式和生產模式要類似這樣操作:

    php bin/magento maintenance:enable && git pull origin master rm -rf var/di/* && rm -rf var/generation/* && rm -rf var/cache/* && rm -rf var/page_cache/* && rm -rf var/view_preprocessed/* && rm -rf pub/static/* && rm -rf generated/* && mkdir var/di php bin/magento setup:upgrade && php bin/magento setup:di:compile php bin/magento setup:static-content:deploy -f && php bin/magento indexer:reindex && php bin/magento maintenance:disable && php bin/magento cache:clean && php bin/magento cache:flush

    說白了,就是
    #1,開啟維護模式,如果有用git版本控制代碼的話,就pull最新代碼下來。
    #2,刪除靜態文件和一系列緩存文件
    #3,更新數據庫以及代碼編譯
    #4, deploy生成靜態文件到pub/static里,供m2讀取。
    #5,更新索引,關閉維護模式,以及清空刷新magento緩存。

    這個我就不細說了,在后面的Magento2線上部署?章節里會詳細說到。

    他這個pub/static下的靜態文件都來源于插件和主題下的web目錄下的文件,都是網站運行過程中需要調用的js/css/images/字體等等。

    一定要搞清楚你目前的m2項目是處于哪個模式。要對癥下藥。
    不然總是遇到無樣式或者頁面空白的情況,一臉懵逼。

    用這個命令查看當前模式

    php bin/magento deploy:mode:show

    一句話

    開發模式不用管pub/static下的靜態緩存文件,也不需要deploy什么的。
    生產模式一定要管pub/static下的靜態緩存文件,要先刪除靜態文件清緩存后再deploy生成靜態文件,刷新緩存,不然就會出問題。

    注意:
    不是說開發模式下就不用管緩存了,我這里說的是不需用deploy生成靜態文件,緩存還是要清的。

    如果你按照
    http://bbs.mallol.cn/?thread-148.htm
    這里設置的話,就不需要清后臺緩存,因為后臺緩存被禁用了。
    但是還是需要清瀏覽器緩存的。

    還需要rm generated/* -rf,因為如果你有修改過php的構造函數function __construct()里的代碼 就需要清下generated/下的代碼緩存,不然會報錯 說找不到這個類 等奇怪的錯誤。

    什么是Magento緩存呢?


    這里就是所謂的magento緩存。
    緩存在var/下面。
    比如var/generation/,var/di/,var/cache/,var/page_cache,var/view_preprocessed。
    這幾個目錄都是magento緩存。

    不要跟deploy的靜態文件搞混淆了,不是同一個東西。
    因為deploy的靜態文件在pub/static下面。

    因為現在的瀏覽器緩存也很嚴重,特別是css/js,要強制刷新才會更新。
    所以你修改js/css后 一定要清瀏覽器緩存,才會看到最新的效果

    開發模式/生產模式 任意切換

    切換到生產模式

    php bin/magento deploy:mode:set production

    切換到生產模式后,需要刪除緩存文件并deploy下。

    切換到開發模式

    php bin/magento deploy:mode:set developer

    切換到開發模式后,還需要再設置下:
    http://bbs.mallol.cn/?thread-148.htm

    如果有無樣式或其他報錯的話,先嘗試執行更新系統的操作:

    php bin/magento maintenance:enable rm -rf var/di/* && rm -rf var/generation/* && rm -rf var/cache/* && rm -rf var/page_cache/* && rm -rf var/view_preprocessed/* && rm -rf pub/static/* && rm -rf generated/* && mkdir var/diphp bin/magento setup:upgrade && php bin/magento setup:di:compilephp bin/magento setup:static-content:deploy -f && php bin/magento indexer:reindex && php bin/magento maintenance:disable && php bin/magento cache:clean && php bin/magento cache:flush

    關于服務器配置問題

    因為m2分開發模式和生產模式,因為開發模式非常耗資源,所以服務器配置按需配置:

  • 開發和線上版本都在同一個服務器,配置至少是4核8G
  • 服務器只放線上版本,配置至少是2核4G
  • 服務器只放開發版本,配置至少是2核8G
  • 總結

    以上是生活随笔為你收集整理的【转】1.5 运行原理剖析的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。