用于Prerender的Starlette中间件。
prerender-python-starlette的Python项目详细描述
预渲染Python Starlette
文档:https://BeeMyDesk.github.io/prerender-python-starlette/
源代码:https://github.com/BeeMyDesk/prerender-python-starlette
简介
Google, Facebook, Twitter, and Bing are constantly trying to view your website... but Google is the only crawler that executes a meaningful amount of JavaScript and Google even admits that they can execute JavaScript weeks after actually crawling. Prerender allows you to serve the full HTML of your website back to Google and other crawlers so that they don't have to execute any JavaScript. Google recommends using Prerender.io to prevent indexation issues on sites with large amounts of JavaScript.
Prerender is perfect for Angular SEO, React SEO, Vue SEO, and any other JavaScript framework.
This middleware intercepts requests to your Node.js website from crawlers, and then makes a call to the (external) Prerender Service to get the static HTML instead of the JavaScript for that page. That HTML is then returned to the crawler.
{ema7}
这个库是Starlette的Prerender中间件的Python实现。它应该可以完美地与FastAPI一起工作,而且很可能与任何ASGI框架一起工作。在
安装
pip install prerender-python-starlette
使用
^{pr2}$参数
prerender_service_url
:Prerender服务器的URL。{cd2>默认为环境变量。在prerender_service_username
:Prerender服务器的HTTP基本身份验证用户名。默认为PRERENDER_SERVICE_USERNAME
环境变量。在prerender_service_password
:Prerender服务器的HTTP基本身份验证密码。默认为PRERENDER_SERVICE_PASSWORD
环境变量。在prerender_service_token
:在X-Prerender-Token
头中设置的令牌。默认为PRERENDER_SERVICE_TOKEN
环境变量。在crawler_user_agents
:要拦截的爬虫程序用户代理的列表。默认为DEFAULT_CRAWLER_USER_AGENTS
列表。在extensions_to_ignore
:要忽略的文件扩展名列表。默认为DEFAULT_EXTENSIONS_TO_IGNORE
列表。在whitelist
:白名单的路径模式列表。不会预呈现与列表中的模式不匹配的路径。{cd15}默认为^。在blacklist
:黑名单的路径模式列表。与列表中的模式匹配的路径不会被预呈现。默认为None
。在before_render
:在预呈现之前调用了异步函数。如果它返回一个HTMLResponse
,它将被视为缓存,并将绕过对Prerender服务器的调用。默认为None
。在after_render
:在预呈现之后调用了异步函数。默认为None
。在
缓存示例
fromstarlette.applicationsimportStarlettefromstarlette.middlewareimportMiddlewarefromprerender_python_starletteimportPrerenderMiddlewareasyncdefbefore_render(request:Request)->Optional[HTMLResponse]:cached_response=awaitcache.get(f"prerender:{request.url.path}")ifcached_response:returnHTMLResponse(cached_response)returnNoneasyncdefafter_render(request:Request,response:HTMLResponse,cached:bool)->None:ifnotcached:awaitcache.set(f"prerender:{request.url.path}",response.body.decode(response.charset))routes=...middleware=[Middleware(PrerenderMiddleware,before_render=before_render,after_render=after_render),]app=Starlette(routes=routes,middleware=middleware)
发展
安装环境
您应该安装了Pipenv。然后,可以安装依赖项:
pipenv install --dev
之后,激活虚拟环境:
pipenv shell
运行单元测试
您可以使用以下各项运行所有测试:
make test
或者,您也可以自己运行pytest
:
pytest
格式化代码
执行以下命令以应用isort
和black
格式:
make format
许可证
这个项目是根据麻省理工学院的许可条款授权的。在
- 项目
标签: