views.py 文件源码

python
阅读 17 收藏 0 点赞 0 评论 0

项目:SuperOcto 作者: mcecchi 项目源码 文件源码
def in_cache():
    url = request.base_url.replace("/cached.gif", "/")
    path = request.path.replace("/cached.gif", "/")
    base_url = request.url_root

    # select view from plugins and fall back on default view if no plugin will handle it
    ui_plugins = pluginManager.get_implementations(octoprint.plugin.UiPlugin,
                                                   sorting_context="UiPlugin.on_ui_render")
    for plugin in ui_plugins:
        if plugin.will_handle_ui(request):
            ui = plugin._identifier
            key = _cache_key(plugin._identifier,
                             url=url,
                             additional_key_data=plugin.get_ui_additional_key_data_for_cache)
            unless = _preemptive_unless(url, additional_unless=plugin.get_ui_preemptive_caching_additional_unless)
            data = _preemptive_data(plugin._identifier,
                                    path=path,
                                    base_url=base_url,
                                    data=plugin.get_ui_data_for_preemptive_caching,
                                    additional_request_data=plugin.get_ui_additional_request_data_for_preemptive_caching)
            break
    else:
        ui = "_default"
        key = _cache_key("_default", url=url)
        unless = _preemptive_unless(url)
        data = _preemptive_data("_default", path=path, base_url=base_url)

    response = make_response(bytes(base64.b64decode("R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")))
    response.headers["Content-Type"] = "image/gif"

    if unless or not preemptiveCache.has_record(data, root=path):
        _logger.info("Preemptive cache not active for path {}, ui {} and data {!r}, signaling as cached".format(path, ui, data))
        return response
    elif util.flask.is_in_cache(key):
        _logger.info("Found path {} in cache (key: {}), signaling as cached".format(path, key))
        return response
    elif util.flask.is_cache_bypassed(key):
        _logger.info("Path {} was bypassed from cache (key: {}), signaling as cached".format(path, key))
        return response
    else:
        _logger.debug("Path {} not yet cached (key: {}), signaling as missing".format(path, key))
        return abort(404)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号