代码之家  ›  专栏  ›  技术社区  ›  user3701175

无法使用Cherrypy禁用或删除favicon.ico

  •  2
  • user3701175  · 技术社区  · 9 年前

    我在将默认cherrypy favicon更改为我自己的book.ico(位于public/images/book.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???

    提前感谢您的帮助。如果我能进一步澄清,请告诉我。

    2 回复  |  直到 9 年前
        1
  •  3
  •   Community holdenweb    7 年前

    这有点众所周知,但令人讨厌 favicon cache issue .

    这个 W3C recommends 使用链接标记而不是依赖 /favicon.ico 自HTML 4.01。它允许您避免为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__)) 稍后使用。

        2
  •  1
  •   Isa Hassen    9 年前

    在根类中尝试一个“favicon_ico”处理程序方法,如早期CherryPy文档中所建议的: https://cherrypy.readthedocs.org/en/3.2.6/progguide/files/favicon.html