mirror of
https://codeberg.org/rimu/pyfedi
synced 2025-01-23 19:36:56 -08:00
performance tweaks
This commit is contained in:
parent
a66311d683
commit
f7fea98dff
5 changed files with 54 additions and 5 deletions
|
@ -60,6 +60,7 @@ def home_page(type, sort):
|
||||||
return return_304(current_etag)
|
return return_304(current_etag)
|
||||||
|
|
||||||
page = request.args.get('page', 1, type=int)
|
page = request.args.get('page', 1, type=int)
|
||||||
|
low_bandwidth = request.cookies.get('low_bandwidth', '0') == '1'
|
||||||
|
|
||||||
if current_user.is_anonymous:
|
if current_user.is_anonymous:
|
||||||
flash(_('Create an account to tailor this feed to your interests.'))
|
flash(_('Create an account to tailor this feed to your interests.'))
|
||||||
|
@ -110,7 +111,7 @@ def home_page(type, sort):
|
||||||
posts = posts.order_by(desc(Post.last_active))
|
posts = posts.order_by(desc(Post.last_active))
|
||||||
|
|
||||||
# Pagination
|
# Pagination
|
||||||
posts = posts.paginate(page=page, per_page=100, error_out=False)
|
posts = posts.paginate(page=page, per_page=100 if current_user.is_authenticated and not low_bandwidth else 50, error_out=False)
|
||||||
if type == 'home':
|
if type == 'home':
|
||||||
next_url = url_for('main.index', page=posts.next_num, sort=sort) if posts.has_next else None
|
next_url = url_for('main.index', page=posts.next_num, sort=sort) if posts.has_next else None
|
||||||
prev_url = url_for('main.index', page=posts.prev_num, sort=sort) if posts.has_prev and page != 1 else None
|
prev_url = url_for('main.index', page=posts.prev_num, sort=sort) if posts.has_prev and page != 1 else None
|
||||||
|
@ -125,7 +126,7 @@ def home_page(type, sort):
|
||||||
|
|
||||||
return render_template('index.html', posts=posts, active_communities=active_communities, show_post_community=True,
|
return render_template('index.html', posts=posts, active_communities=active_communities, show_post_community=True,
|
||||||
POST_TYPE_IMAGE=POST_TYPE_IMAGE, POST_TYPE_LINK=POST_TYPE_LINK,
|
POST_TYPE_IMAGE=POST_TYPE_IMAGE, POST_TYPE_LINK=POST_TYPE_LINK,
|
||||||
low_bandwidth=request.cookies.get('low_bandwidth', '0') == '1',
|
low_bandwidth=low_bandwidth,
|
||||||
SUBSCRIPTION_PENDING=SUBSCRIPTION_PENDING, SUBSCRIPTION_MEMBER=SUBSCRIPTION_MEMBER,
|
SUBSCRIPTION_PENDING=SUBSCRIPTION_PENDING, SUBSCRIPTION_MEMBER=SUBSCRIPTION_MEMBER,
|
||||||
etag=f"{type}_{sort}_{hash(str(g.site.last_active))}", next_url=next_url, prev_url=prev_url,
|
etag=f"{type}_{sort}_{hash(str(g.site.last_active))}", next_url=next_url, prev_url=prev_url,
|
||||||
rss_feed=f"https://{current_app.config['SERVER_NAME']}/feed",
|
rss_feed=f"https://{current_app.config['SERVER_NAME']}/feed",
|
||||||
|
|
|
@ -103,7 +103,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="comment_actions hidable">
|
<div class="comment_actions hidable">
|
||||||
{% if post.comments_enabled %}
|
{% if post.comments_enabled %}
|
||||||
<a href="{{ url_for('post.add_reply', post_id=post.id, comment_id=comment['comment'].id) }}" rel="nofollow"><span class="fe fe-reply"></span> reply</a>
|
<a href="{{ url_for('post.add_reply', post_id=post.id, comment_id=comment['comment'].id) }}" rel="nofollow noindex"><span class="fe fe-reply"></span> reply</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="voting_buttons_new">
|
<div class="voting_buttons_new">
|
||||||
{% with comment=comment['comment'] %}
|
{% with comment=comment['comment'] %}
|
||||||
|
@ -120,7 +120,7 @@
|
||||||
{% if current_user.is_authenticated and current_user.verified and current_user.id == comment['comment'].author.id %}
|
{% if current_user.is_authenticated and current_user.verified and current_user.id == comment['comment'].author.id %}
|
||||||
{% include "post/_reply_notification_toggle.html" %}
|
{% include "post/_reply_notification_toggle.html" %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<a href="{{ url_for('post.post_reply_options', post_id=post.id, comment_id=comment['comment'].id) }}" class="comment_actions_link" rel="nofollow"><span class="fe fe-options" title="Options"> </span></a>
|
<a href="{{ url_for('post.post_reply_options', post_id=post.id, comment_id=comment['comment'].id) }}" class="comment_actions_link" rel="nofollow noindex"><span class="fe fe-options" title="Options"> </span></a>
|
||||||
</div>
|
</div>
|
||||||
{% if comment['replies'] %}
|
{% if comment['replies'] %}
|
||||||
{% if comment['comment'].depth <= THREAD_CUTOFF_DEPTH %}
|
{% if comment['comment'].depth <= THREAD_CUTOFF_DEPTH %}
|
||||||
|
|
|
@ -62,7 +62,8 @@ def return_304(etag, content_type=None):
|
||||||
|
|
||||||
# Jinja: when a file was modified. Useful for cache-busting
|
# Jinja: when a file was modified. Useful for cache-busting
|
||||||
def getmtime(filename):
|
def getmtime(filename):
|
||||||
return os.path.getmtime('static/' + filename)
|
if os.path.exists('static/' + filename):
|
||||||
|
return os.path.getmtime('static/' + filename)
|
||||||
|
|
||||||
|
|
||||||
# do a GET request to a uri, return the result
|
# do a GET request to a uri, return the result
|
||||||
|
|
|
@ -10,3 +10,9 @@ sudo systemctl restart celeryd or sudo service celeryd restart
|
||||||
|
|
||||||
*** check for celery-related problems by looking in /var/log/celery ***
|
*** check for celery-related problems by looking in /var/log/celery ***
|
||||||
|
|
||||||
|
for profiling:
|
||||||
|
use
|
||||||
|
python profile_app.py
|
||||||
|
instead of
|
||||||
|
flask run
|
||||||
|
|
||||||
|
|
41
profile_app.py
Normal file
41
profile_app.py
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
#!flask/bin/python
|
||||||
|
import os
|
||||||
|
|
||||||
|
from flask import session, g, json
|
||||||
|
from flask_babel import get_locale
|
||||||
|
from werkzeug.middleware.profiler import ProfilerMiddleware
|
||||||
|
from app import create_app, db, cli
|
||||||
|
from app.models import Site
|
||||||
|
from app.utils import gibberish, shorten_number, community_membership, getmtime, digits, user_access, ap_datetime, \
|
||||||
|
can_create, can_upvote, can_downvote, current_theme, shorten_string, shorten_url
|
||||||
|
|
||||||
|
app = create_app()
|
||||||
|
|
||||||
|
with app.app_context():
|
||||||
|
app.jinja_env.globals['getmtime'] = getmtime
|
||||||
|
app.jinja_env.globals['len'] = len
|
||||||
|
app.jinja_env.globals['digits'] = digits
|
||||||
|
app.jinja_env.globals['str'] = str
|
||||||
|
app.jinja_env.globals['shorten_number'] = shorten_number
|
||||||
|
app.jinja_env.globals['community_membership'] = community_membership
|
||||||
|
app.jinja_env.globals['json_loads'] = json.loads
|
||||||
|
app.jinja_env.globals['user_access'] = user_access
|
||||||
|
app.jinja_env.globals['ap_datetime'] = ap_datetime
|
||||||
|
app.jinja_env.globals['can_create'] = can_create
|
||||||
|
app.jinja_env.globals['can_upvote'] = can_upvote
|
||||||
|
app.jinja_env.globals['can_downvote'] = can_downvote
|
||||||
|
app.jinja_env.globals['theme'] = current_theme
|
||||||
|
app.jinja_env.globals['file_exists'] = os.path.exists
|
||||||
|
app.jinja_env.filters['shorten'] = shorten_string
|
||||||
|
app.jinja_env.filters['shorten_url'] = shorten_url
|
||||||
|
app.config['PROFILE'] = True
|
||||||
|
app.wsgi_app = ProfilerMiddleware(app.wsgi_app, restrictions=[30])
|
||||||
|
app.run(debug = True, host='127.0.0.1')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@app.before_request
|
||||||
|
def before_request():
|
||||||
|
session['nonce'] = gibberish()
|
||||||
|
g.locale = str(get_locale())
|
||||||
|
g.site = Site.query.get(1)
|
Loading…
Reference in a new issue