3
如果我希望我的清漆緩存服務器在提供或存儲頁面(vcl_fetch?)之前將頁面內的內容(即:更改div上的類)從後端替換,這可以做到嗎?用清漆+正則表達式替換頁面中的內容
我想使用簡單的正則表達式來執行替換,因爲我認爲它是在varnish中本地支持的。
如果我希望我的清漆緩存服務器在提供或存儲頁面(vcl_fetch?)之前將頁面內的內容(即:更改div上的類)從後端替換,這可以做到嗎?用清漆+正則表達式替換頁面中的內容
我想使用簡單的正則表達式來執行替換,因爲我認爲它是在varnish中本地支持的。
varnish本地支持修改響應主體。你需要一個清漆模塊(vmod)。
Aivars Kalvans有libvmod-rewrite,它完全符合您的要求。然而,vmod是一個概念證明,根據Aivars的說法,它尚未準備好用於生產。無論如何,您都可以將其作爲起點。
如果您使用的是Apache,則可以使用mod_ext_filter修改響應正文。這裏是一個來自mod_ext_filters文檔的例子。由於您可以將響應主體傳遞給任何外部命令,因此很容易對內容進行必要的修改。
# mod_ext_filter directive to define a filter which
# replaces text in the response
#
ExtFilterDefine fixtext mode=output intype=text/html cmd="/bin/sed s/verdana/arial/g"
<Location />
# core directive to cause the fixtext filter to
# be run on output
SetOutputFilter fixtext
</Location>
結束後,只有自己寫通道才能清漆。不過,我會看看libvmod-rewrite。謝謝。 – tweak2 2013-04-15 18:53:57
關於'mod_ext_filters'我想可能[mod_substitute](http://httpd.apache.org/docs/2.4/mod/mod_substitute.html)可能更適合用例,如果apache是一個選項 – George 2017-02-08 19:53:43