无法使用 Cherrypy 禁用或删除 favicon.ico
Can't disable or remove favicon.ico with Cherrypy
我在将默认的 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???
提前感谢您的帮助。如果我能进一步澄清,请告诉我。
虽然有点知名但很烦人favicon cache issue。
自 HTML 4.01 以来,W3C recommends 使用 link 标签而不是依赖 /favicon.ico
。它允许您避免为网站图标制作异常路由,并使用 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__))
以后再用。
按照旧版 CherryPy 文档的建议,在您的根 class 中尝试 "favicon_ico" 处理程序方法:https://cherrypy.readthedocs.org/en/3.2.6/progguide/files/favicon.html
我在将默认的 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???
提前感谢您的帮助。如果我能进一步澄清,请告诉我。
虽然有点知名但很烦人favicon cache issue。
自 HTML 4.01 以来,W3C recommends 使用 link 标签而不是依赖 /favicon.ico
。它允许您避免为网站图标制作异常路由,并使用 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__))
以后再用。
按照旧版 CherryPy 文档的建议,在您的根 class 中尝试 "favicon_ico" 处理程序方法:https://cherrypy.readthedocs.org/en/3.2.6/progguide/files/favicon.html