Skip to content

Commit ee46055

Browse files
committed
Virtualize blog post to reduce initial loading time, Closes #28
1 parent 421bab0 commit ee46055

File tree

2 files changed

+11
-9
lines changed

2 files changed

+11
-9
lines changed

LinkDotNet.Blog.Web/Pages/Index.razor

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,16 @@
2323
</div>
2424
</header>
2525
<div class="content px-4 my-2">
26-
@for (var i = 0; i < currentPage.Count; i++)
27-
{
28-
<ShortBlogPost BlogPost="currentPage[i]" UseAlternativeStyle="@(i % 2 != 0)"></ShortBlogPost>
29-
}
26+
<Virtualize Items="@currentPage.ToList()">
27+
<ShortBlogPost BlogPost="context" UseAlternativeStyle="@(currentLine++ % 2 != 0)"></ShortBlogPost>
28+
</Virtualize>
3029
</div>
3130
<BlogPostNavigation CurrentPage="@currentPage" OnPageChanged="@GetPage"></BlogPostNavigation>
3231
</section>
3332

3433
@code {
35-
IPagedList<BlogPost> currentPage = new PagedList<BlogPost>(null, 1, 1);
34+
private IPagedList<BlogPost> currentPage = new PagedList<BlogPost>(null, 1, 1);
35+
private int currentLine;
3636

3737
private string ImageUrl => appConfiguration.Introduction.BackgroundUrl.ToAbsoluteUrl(navigationManager.BaseUri);
3838

@@ -54,7 +54,10 @@
5454

5555
private async Task GetPage(int newPage)
5656
{
57-
currentPage = await blogPostRepository.GetAllAsync(p => p.IsPublished, b => b.UpdatedDate, pageSize: appConfiguration.BlogPostsPerPage, page:
58-
newPage);
57+
currentPage = await blogPostRepository.GetAllAsync(
58+
p => p.IsPublished,
59+
b => b.UpdatedDate,
60+
pageSize: appConfiguration.BlogPostsPerPage,
61+
page: newPage);
5962
}
6063
}

LinkDotNet.Blog.Web/Shared/ShortBlogPost.razor

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@
55
<article>
66
<div class="blog-card @AltCssClass">
77
<div class="meta">
8-
<div class="photo"><img style="height: 100%; width: 100%; display:block;object-position: center; object-fit: cover;" data-src="@BlogPost.PreviewImageUrl" alt=""
9-
loading="lazy" /></div>
8+
<div class="photo" style="background-image: url(@BlogPost.PreviewImageUrl)"></div>
109
<ul class="details">
1110
<li class="date">@BlogPost.UpdatedDate.ToString("dd/MM/yyyy")</li>
1211
@if (BlogPost.Tags != null)

0 commit comments

Comments
 (0)