W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
solrconfig.xml的requestDispatcher元素,控制了Solr HTTP RequestDispatcher實(shí)現(xiàn)對(duì)請(qǐng)求的響應(yīng)方式。
其中包括用于定義是否應(yīng)該處理/select的url的參數(shù)(對(duì)于Solr 1.1兼容性),如果它支持遠(yuǎn)程流,文件上傳的最大大小以及它將如何響應(yīng)HTTP緩存頭的請(qǐng)求。
注意:handleSelect 是為了傳統(tǒng)的后向兼容性;那些新來的Solr不需要改變默認(rèn)配置的方式
第一個(gè)可配置項(xiàng)是< requestDispatcher >元素本身的handleSelect當(dāng)選屬性。該屬性可以設(shè)置為“true”或“false”兩個(gè)值之一。它管理Solr如何響應(yīng)請(qǐng)求,如:/select?qt=XXX。如果requestHandler沒有顯式注冊(cè)/select名稱,默認(rèn)值“false”將忽略請(qǐng)求/select。值“true”將查詢請(qǐng)求路由到定義為qt值的解析器。
在Solr的最新版本中,/selectrequestHandler是默認(rèn)定義的,因此值“false”將正常工作。有關(guān)更多信息,請(qǐng)參閱SolrConfig中的RequestHandlers和SearchComponents部分。
<requestDispatcher handleSelect="true" >
...
</requestDispatcher>
該<requestParsers>子元素控制與解析請(qǐng)求的相關(guān)值。這是一個(gè)空的XML元素,沒有任何內(nèi)容,只有屬性。
該屬性enableRemoteStreaming控制是否允許遠(yuǎn)程傳輸內(nèi)容。如果省略或設(shè)置為false(默認(rèn)),則不允許流式傳輸。將其設(shè)置為true允許您指定要使用stream.file和stream.url參數(shù)進(jìn)行流式傳輸?shù)膬?nèi)容或位置。
如果啟用遠(yuǎn)程流式傳輸,請(qǐng)確保您已啟用身份驗(yàn)證。否則,有人可能通過訪問任意的URL訪問您的內(nèi)容。將Solr放置在防火墻后面以防止從不可信的客戶端訪問Solr也是一個(gè)好主意。
該屬性multipartUploadLimitInKB以可以在多部分HTTP POST請(qǐng)求中提交的文檔的大小為單位設(shè)置以千字節(jié)為單位的上限。指定的值乘以1024來確定以字節(jié)為單位的大小。-1意味著MAX_INT 的值,如果省略,它也是系統(tǒng)默認(rèn)值。
該屬性formdataUploadLimitInKB在HTTP POST請(qǐng)求中提交的表單數(shù)據(jù)(application / x-www-form-urlencoded)的大小上設(shè)置了一個(gè)限制(千字節(jié)),可用于傳遞不適合URL的請(qǐng)求參數(shù)。-1意味著MAX_INT 的值,如果省略,也是系統(tǒng)默認(rèn)值。
該屬性addHttpRequestToContext可以用來指示原始HttpServletRequest對(duì)象應(yīng)該包含在SolrQueryRequest使用httpRequest鍵的上下文映射。HttpServletRequest不是任何Solr組件所使用的,但在開發(fā)自定義插件時(shí)可能會(huì)有用。
<requestParsers enableRemoteStreaming="false"
multipartUploadLimitInKB="2048"
formdataUploadLimitInKB="2048"
addHttpRequestToContext="false" />
以下命令是如何通過Config API啟用RemoteStreaming和BodyStreaming的示例:
curl http://localhost:8983/solr/gettingstarted/config -H 'Content-type:application/json' -d'{
"set-property" : {"requestDispatcher.requestParsers.enableRemoteStreaming":true},
"set-property" : {"requestDispatcher.requestParsers.enableStreamBody":true}
}'
該<httpCaching>元素控制HTTP緩存控制標(biāo)頭。不要將這些設(shè)置與Solr的內(nèi)部緩存配置混淆。該元素控制由W3C HTTP規(guī)范定義的HTTP響應(yīng)的緩存。
這個(gè)元素允許三個(gè)屬性和一個(gè)子元素。<httpCaching>元素的屬性控制是否允許對(duì)GET請(qǐng)求的304響應(yīng),如果是,則應(yīng)該是什么類型的響應(yīng)。當(dāng)一個(gè)HTTP客戶端應(yīng)用程序發(fā)出一個(gè)GET時(shí),它可以選擇性地指定一個(gè)304響應(yīng)是可接受的,如果該資源從上次被提取以來沒有被修改過。
如果存在值true
,則GET請(qǐng)求將永遠(yuǎn)不會(huì)響應(yīng)304代碼,即使請(qǐng)求的資源未被修改。當(dāng)此屬性設(shè)置為true時(shí),接下來的兩個(gè)屬性將被忽略。將其設(shè)置為true對(duì)于開發(fā)是非常方便的,因?yàn)楫?dāng)通過Web瀏覽器或其他支持緩存頭的客戶端修改Solr響應(yīng)時(shí),304響應(yīng)可能會(huì)造成混淆。
該屬性可以設(shè)置為openTime
(默認(rèn))或dirLastMod
。該值openTime
表示與由客戶端發(fā)送的If-Modified-Since報(bào)頭相比,最后修改時(shí)間應(yīng)該相對(duì)于搜索器開始的時(shí)間來計(jì)算。使用dirLastMod
,如果您想要時(shí)間精確地對(duì)應(yīng)于磁盤上最后更新的索引。
這個(gè)屬性的值作為ETag
頭的值發(fā)送。即使索引沒有改變,更改此值也可能有助于強(qiáng)制客戶重新獲取內(nèi)容 - 例如,當(dāng)您對(duì)配置進(jìn)行了一些更改時(shí)。
<httpCaching never304="false"
lastModFrom="openTime"
etagSeed="Solr">
<cacheControl>max-age=30, public</cacheControl>
</httpCaching>
除了這些屬性之外,<httpCaching>接受一個(gè)子元素:<cacheControl>。這個(gè)元素的內(nèi)容將作為HTTP響應(yīng)的Cache-Control頭的值發(fā)送。此標(biāo)頭用于修改請(qǐng)求客戶端的默認(rèn)緩存行為。Cache-Control頭的可能值由第14.9節(jié)中的HTTP 1.1規(guī)范定義。
設(shè)置max-age字段控制客戶端在從服務(wù)器再次請(qǐng)求之前可以重新使用緩存響應(yīng)的時(shí)間。此時(shí)間間隔應(yīng)根據(jù)您更新索引的頻率以及您的應(yīng)用程序是否可接受使用已過時(shí)的內(nèi)容來設(shè)置。設(shè)置must-revalidate將告訴客戶端在服務(wù)器上重新使用之前確認(rèn)其緩存副本仍然正常。這將確保使用最及時(shí)的結(jié)果,同時(shí)避免在不需要的情況下再次獲取內(nèi)容,則請(qǐng)求服務(wù)器進(jìn)行檢查。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: