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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

satis原理浅析

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

什么是satis

我們一般是從packagist獲取composer包的,但這些都是公開的。那如果我們想創建自己的私有庫呢,比如企業就會有這方便的需要,那我們就可以用satis來創建自己的私有庫。

Satis 是一個靜態的 composer 資源庫生成器。它像是一個超輕量級的、基于靜態文件的 packagist 版本。
你給它一個包含 composer.json 的存儲庫,定義好 VCS 和 資源庫。它會獲取所有你列出的包,并打印 packages.json 文件,作為 composer 類型的資源庫。

什么是主資源庫

搭建過satis的同學都知道,如果我們要引用它,需要在composer.json中加入對應的倉庫

"repositories": {"satis": {"type": "composer","url" : "http://satis.corp.anjuke.com"},"aptf": {"type":"git","url":"git@gitlab.corp.anjuke.com:maben01/aptf.git"} }

我們可以看到,satis倉庫的類型為composer,那類型為composer是啥意思呢?附上官網的解釋

主資源庫的類型為?composer。它使用一個單一的?packages.json?文件,包含了所有的資源包元數據。
這也是 packagist.org 所使用的資源類型。要引用一個?composer?資源庫,只需要提供一個存放?packages.json?文件的?目錄路徑。比如要引用?packagist.org?下的?/packages.json,它的 URL 就應該是?packagist.org。而?example.org/packages.json?的 URL 應該是?example.org。

抓包看究竟

我們使用composer require xxx命令時,composer會依次查找composer.json中的repositories塊是否有指定的包。當看到類型為composer的statis地址時,composer實際上是發起了一次http請求,可以看到user-agent為'composer/1.6.2'。

但返回了一串“include/all$e75fd28807530f173c649ebc19728a480208c415.json”是什么意思?我是要獲取composer包的元數據啊!關鍵在于includes,官網給出了解釋

對于較大的資源庫,可以拆分 packages.json 為多個文件。includes 字段允許你引用這些額外的文件。
文件的 SHA-1 碼允許它被緩存,僅在 hash 值改變時重新請求。

composer看到返回的sha-1改變了,會發起第二次請求來獲取真正的元數據。抓包如下

可以看到,請求的路徑就是上次請求includes塊的key值,此時我們終于知道composer包的源地址在哪啦,撒花~

以上是我的個人理解,如有錯誤,歡迎指正~

總結

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

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