我有一个问题是将默认的cherrypy favicon更改为我自己的,名为book.ico,位于public / images / books.ico中。我已经尝试使用以下代码禁用它:
'/favicon.ico': {
'tools.staticfile.on': False,
}
但该图标仍显示为标签标签。我正在使用Chrome以隐身模式浏览网站。
import cherrypy
import os
import glob
class HelloWorld(object):
favicon_ico = None
@cherrypy.expose
def index(self):
return file('public/html/index.html')
...跳过def generate(self,name)
if __name__ == '__main__':
cherrypy.config.update({
'server.socket_host':
'192.168.2.9','server.socket_port':8080,
'/static': {
'tools.staticdir.on': True,
'tools.staticdir.dir': os.getcwd(),
},
'/public': {
'tools.staticdir.on': True,
'tools.staticdir.dir': os.path.join(os.getcwd(), "/public"),
},
'/favicon.ico': {
'tools.staticfile.on': True,
'tools.staticfile.filename': os.path.join(os.getcwd(), '/public/images/books.ico')
}
})
cherrypy.tree.mount(HelloWorld())
cherrypy.engine.start()
cherrypy.engine.block()
目录结构
.
├── app.conf
├── bin
│ ├── activate
│ ├── activate.csh
│ ├── activate.fish
│ ├── activate_this.py
│ ├── cherryd
│ ├── easy_install
│ ├── easy_install-2.7
│ ├── pip
│ ├── pip2
│ ├── pip2.7
│ ├── python
│ ├── python2 -> python
│ └── python2.7 -> python
├── books.ico
├── CherrypyProd.py
├── images
├── pip-selfcheck.json
├── public
│ ├── css
│ ├── html
│ │ ├── books.png
│ │ └── index.html
│ └── images
│ ├── books.ico
│ └── books.png
├── ssl
├── static
└── books.png
如何用我自己的books.ico ???
替换默认的favicon.ico提前感谢您的帮助。如果我能进一步澄清,请告诉我。
答案 0 :(得分:2)
有点已知但令人烦恼的favicon cache issue。
W3C recommends使用链接标记,而不是自HTML 4.01以来依赖/favicon.ico
。它允许您避免为favicon制作例外路线并使用普通图像格式,如JPEG和PNG。它还允许公司缓存失效在查询字符串中提供版本。
<link rel="icon" type="image/png" href="/static/myicon.png?v=1">
为了确保您的配置正常,并且浏览器缓存问题会对文件和CherryPy响应进行校验和。
cat books.ico | md5sum
wget -qO- http://192.168.2.9:8080/favicon.ico | md5sum
一个侧面建议,不要依赖os.getcwd
,因为它很容易忘记事先设置当前目录的假设。最好设置path = os.path.abspath(os.path.dirname(__file__))
并稍后再使用它。
答案 1 :(得分:1)
在根类中尝试“favicon_ico”处理程序方法,如旧版CherryPy文档中所述:https://cherrypy.readthedocs.org/en/3.2.6/progguide/files/favicon.html