Techniques for Optimizing Costs on AWS DynamoDB Tables

AWS DynamoDB, a fully managed NoSQL database service, provides high performance and scalability for applications. While DynamoDB offers incredible capabilities, it is important to implement cost-saving strategies to optimize the usage of DynamoDB tables. In this article, we will explore some techniques and technical approaches to save costs on AWS DynamoDB tables while maintaining performance and scalability.

Right-Sizing Provisioned Capacity

To optimize costs, accurately estimate the required provisioned capacity for your DynamoDB tables. Provisioned capacity requires specifying a fixed number of read and write units. Monitor your application's traffic patterns using Amazon CloudWatch metrics and DynamoDB's built-in dashboard. Analyze the data and adjust the provisioned capacity based on the observed usage patterns. By avoiding overprovisioning and underutilization, you can significantly reduce costs associated with provisioned throughput.

Evaluating Apache APISIX vs. Spring Cloud Gateway

Given the number of API Gateways available on the market, I'm regularly asked which is better. Better is a very subjective term. However, there's no denying that if you're advocating for a product, you should know your product and its competitors. In this post, I'd like to share my understanding of Spring Cloud Gateway and how it compares to Apache APISIX.

I'm cautious when comparing products because most comparisons I read are heavily biased. That's a risk, especially when working on one of the products one is comparing. I'll also avoid "benchmarketing" - when you benchmark products in a context that favors your own; I'll focus on the so-called Developer Experience.

Crafting a Spinning Loader with Pure CSS

Imagine you’re on a website, eagerly waiting for content to load, but all you see is a blank screen. It’s frustrating, isn’t it? The spinning loader, or spinner, is a UI element designed to combat this exact problem. It informs users that the system hasn’t stalled — it’s just busy fetching data. Today, we’ll be crafting a loader with pure CSS that effectively communicates this busy state.

Your Web Designer Toolbox
Unlimited Downloads: 500,000+ Web Templates, Icon Sets, Themes & Design Assets


Crafting a Loader with Pure CSS

We’ll first structure our spinner using HTML, then we’ll style and animate it using CSS.

HTML Structure for the CSS Loader

<div class="spinner"></div>

Our structure is lightweight, comprising a single div element with a class of “spinner”. This div will serve as the container for our loader.

Now that we’ve set the HTML structure, let’s proceed to craft the spinner using pure CSS.

CSS Styling and Animation for the Loader

/* Defining the Spinner */
.spinner {
  border: 14px solid #e8e8e8; /* Light grey */
  border-top: 14px solid #f65b5f; /* Our color */
  border-radius: 50%; /* Circle */
  width: 80px; 
  height: 80px; 
  animation: spin 1s ease infinite; /* Animation */
}

/* Animation for Spinning Effect */
@keyframes spin {
    to {
        transform: rotate(1turn); /* Full rotation */
    }
}

In the CSS, we define the .spinner class where we design the visual aspects and motion of our loader:

  • The border is set to be 14px wide with a light grey color (#e8e8e8). This creates a circle, which becomes our loader’s base.
  • The border-top is given a solid, visually appealing color (#f65b5f) to make it stand out against the lighter circle.
  • We then make the border circular by setting the border-radius property to 50%.
  • The dimensions of the spinner are set with the width and height properties, each set to 80px, giving our spinner a balanced size.
  • The animation property defines our animation:
    • The animation’s name is “spin”, which we have defined in the @keyframes rule.
    • The duration is set to 1s, striking a balance between a fast and slow spin.
    • The animation-timing-function is set to ease, giving the animation a more natural feel.
    • The animation-iteration-count is set to infinite, meaning the animation will run indefinitely — perfect for a loader.

Finally, the @keyframes rule spin defines what the animation does — it rotates the spinner one full turn (1turn).

The Result

See the Pen
Spinner Loader with Pure CSS
by 1stWebDesigner (@firstwebdesigner)
on CodePen.0

Wrapping Up

Crafting a neat loader isn’t just about aesthetics; it’s a crucial tool that communicates system activity to users. When paired with effective UX writing and controlled with JavaScript, loaders can do more than indicate data-fetching; they can convey various states of processes in complex applications. Accompanying messages can offer insights like the operation type or completion time estimate.

Consider an e-commerce site using a small spinner on a “Buy Now” button to show a transaction is underway, with a note saying “Processing your purchase…”. For tasks with longer wait times, like report generation, a fullscreen loader might be suitable, potentially with a progress bar or comforting message such as “Compiling your custom report…”.

But it’s vital that the loader and its messages fit your design language and meet user expectations. The goal is to reduce wait-time friction and create a smooth, intuitive user experience.

Reliability Testing Tutorial: Comprehensive Guide With Best Practices

Reliability testing is a part of the software development process that helps ensure that a software application or system performs seamlessly in each environmental condition as expected over time. It incorporates the test results from functional and non-functional testing to determine issues in software design.

Have you ever thought about the long-term performance of the products or systems daily? Whether it's our smartphones, cars, or even appliances in our homes, we expect them to work correctly and consistently over time.

Adhering to Privacy Laws When Preserving System History

Privacy laws worldwide prohibit access to sensitive data in the clear such as passport numbers and email addresses. It is no different when persisting to operational logs. One approach can be to anonymize the data before persisting it. However, this only allows for technical and business investigations. Another approach is to rely on the operating system to prevent unauthorized access using security groups or some such mechanism. This might be the easiest way to gain compliance. However, this approach relies heavily on human effort, and humans make mistakes. Furthermore, system administrators with root access will be able to view sensitive data in the clear.

Another approach that comes to mind is to share a symmetric key between the system doing the logging and all entities vetted for read access. In such a scheme, the application will encrypt selectively before writing to the log, allowing for users to decrypt when required. This approach begs the normal questions of how to share the key securely for the first time or during the key rotations mandated by the organization’s security policies. Not to mention the security risk of so many entities having access to the key.

The Importance of API Versioning and Best Practices for Microservices

Microservices architecture has emerged as a popular solution for building complex and scalable applications. In a microservices architecture, an application is broken down into a collection of loosely coupled, independently deployable services that communicate with each other via APIs. This approach offers many benefits, including improved scalability, reliability, and flexibility.

However, managing the APIs in a microservices architecture can be challenging, especially as the number of services grows. This is where API versioning comes in. API versioning is the practice of creating multiple versions of an API to support different clients and use cases. It helps ensure that changes to an API don't break existing clients and provides a way to evolve the API over time.

Chris’ Corner: If these computers are so smart, how come I have tell them what to do?

It’s clear that this current generation of “AI” / LLM tools likes offering a “chat box” as the primary interaction model. Both Bard and OpenAI’s interface center a text input at the bottom of the screen (like most messaging clients) and you converse with it a bit like you would text with your friends and family. Design calls that an affordance. You don’t need to be taught how to use it, because you already know. This was probably a smart opening play. For one, they need to teach us how smart they are and if they can even partially successfully answer our questions, that’s impressive. Two, it teaches you that the response from the first thing you entered isn’t the final answer; it’s just part of a conversation, and sending through additional text is something you can and should do.

But not everyone is impressed with chat box as the interface. Maggie Appleton says:

But it’s also the lazy solution. It’s only the obvious tip of the iceberg when it comes to exploring how we might interact with these strange new language model agents we’ve grown inside a neural net.

Maggie goes on to showcase an idea for a writing assistant leveraging a LLM. Highlight a bit of text, for example, and the UI offers you a variety of flavored feedback. Want it to play devil’s advocate? That’s the blue toggle. Need some praise? Need it shortened or lengthened? Need it to find a source you forgot? Need it to highlight awkward grammar? Want it to suggest a different way to phrase it? Those are different colored toggles.

Notably, you didn’t have to type in a prompt, the LLM started helping you contextually based on what you were already doing and what you want to do. Much less friction there. More help for less work. Behind the scenes, it doesn’t mean this tool wouldn’t be prompt-powered, it still could! It could craft prompts for a LLM API based on the selected text and additional text that is proven to have done the job that tool is designed to do.

Data + Context + Sauce = Useful Output

That’s how I think of it anyway — and none of those things require a chat box.

While I just got done telling you the chat box is an affordance, Amelia Wattenberger argues it’s actually not. It’s not because “just type something” isn’t really all you need to know to use it. At least not use it well. To get actually good results, you need to provide a lot, like how you want the great machine to respond, what tone it should strike, what it should specifically include, and anything else that might help it along. These incantations are awfully tricky to get right.

Amelia is thinking along the same lines as Maggie: a writing assistant where the model is fed with contextual information and a variety of choices rather than needing a user to specifically prompt anything.

It might boil down to a best practice something like offer a prompt box if it’s truly actually useful, but otherwise try to do something better.

A lot of us coders have already experienced what better can be. If you’ve tried GitHub Copilot, you know that you aren’t constantly writing custom prompts to get useful output, useful output is just constantly shown to you in the form of ghost code launching out in front of the code you’re already writing for you to take or not. There is no doubt this is a great experience for us and makes the most of the models powers.

I get the sense that even the models are better when they are trained hyper contextually. If I want poetry writing help, I would hope that the model is trained on… poetry. Same with Copilot. It’s trained on code so it’s good at code. I suspect that’s what makes Phind useful. It’s (probably) trained on coding documentation so the results are reliably in that vein. A text box prompt, but that’s kind of the point. I’m also a fan of Phind because it proves that models can tell you the source of their answers as it gives them to you, something the bigger models have chosen not to do, which I think is gross and driven by greed.

Geoffrey Litt makes a good point about UX of all this in Malleable software in the age of LLMs. What’s a better experience, typing “trim this video from 0:21 to 1:32” into a chat box or dragging a trimming slider from the left and right sides of a timeline? (That’s rhetorical: it’s the latter.)

Even though we’ve been talking largely about LLMs, I think all this holds true with the image models as well. It’s impressive to type “A dense forest scene with a purple Elk dead center in it, staring at you with big eyes, in the style of a charles close painting” and get anything anywhere near that back. (Of course with the copyright ambiguity that allows you to use it on a billboard today). But it’s already proving that that parlor trick isn’t as useful as contextual image generation. “Painting” objects out of scenes, expanding existing backgrounds, or changing someone’s hair, shirt, or smile on the fly is far more practical. Photoshop’s Generative Fill feature does just that and requires no silly typing of special words into a box. Meta’s model that automatically breaks up complex photos into parts you can manipulate independently is a great idea as it’s something design tool experts have been doing for ages. It’s a laborious task that nobody relishes. Let the machines do it automatically — just don’t make me type out my request.

The post Chris’ Corner: If these computers are so smart, how come I have tell them what to do? appeared first on CodePen Blog.

Reshaping the Cloud To Meet Modern Workloads

The Amazon Prime Video team recently published a blog post that made waves among the cloud and developer communities. In the post, the team detailed how moving one of their monitoring tools from a distributed serverless architecture to a monolith helped lower costs and increase scalability.

So, is this the end or serverless, as some are calling it? Hardly. Just because the Prime Video team realized that a monolith architecture worked best in this use case does not mean that it should be the go-to architecture for monitoring tools. Those decisions should be made by individual teams choosing the best technologies and architecture for their own cloud deployments. Serverless makes a lot of sense for a multitude of use cases, especially streaming video.

Can a Team Have 150 People in It? FAST Agile Says Yes

FAST agile is the most interesting organizational practice I’ve learned about in a while. Today I share what FAST agile is, and explore whether it’s worth experimenting with. TL;DR? Quite compelling, but still experimental.

What Is FAST Agile?

FAST Agile is an agile software variant. FAST focuses on self-organization within very large teams. These large teams are called Collectives. They can be a few people, to as many as 150 people1.

The Saga Is Antipattern

The Saga pattern is often positioned as a better way to handle distributed transactions. I see no point in discussing Saga's advantages and disadvantages because Saga should not be used at all in the microservices-based systems:

If you need distributed transactions across a few microservices, most likely you incorrectly defined and separated domains.

Creating Ghost Buttons with CSS

In recent years, ghost buttons have solidified their position as a trendy and elegant element. Characterized by their transparent nature and minimalist outline, ghost buttons, also known as “empty” or “naked” buttons, offers a sleek, clean aesthetic that can improve user experience. Below, we’ll explore how to create such a ghost button using CSS.

Kinsta

UX Consideration for Ghost Buttons

Ghost buttons are typically bordered by a fine line and contain plain text within. Often used as CTAs, they provide a neat appearance, grabbing attention with high contrast while offering a fresh take on the “flat” look.

Furthermore, they’ve become popular because they’re simple to design, help create focal points without overwhelming the user, and improve aesthetics by maintaining a clean UI. Plus, they easily integrate into any design due to their ability to blend with the environment.

Despite their benefits, ghost buttons must be used wisely. Inappropriate placement can cause them to blend too much with the overall layout, and in worst-case scenarios, they can be mistaken for input fields. It would be best if you were cautious when using them, especially on a background image, as they can fall too far into the background and lead to text legibility issues.

Now that we understand certain UX implications, let’s create one using HTML and CSS.

Setting Up the Structure for Our Ghost Button

The first step to creating a Ghost Button with CSS involves setting up the HTML structure. In this setup, we’re using the <a> element to serve as the base for our Ghost Button. Here’s how it looks:

<a href="https://1stwebdesigner.com/designing-engaging-3d-buttons-css/" class="elegant-ghost-button" target="_blank">Featured</a> 

Styling the Ghost Button with CSS

The next step is to define the appearance of our ghost button. Here’s a look at the CSS code we’ll be using:

body {
  background: #1b1f25;
}

/* Styling our Ghost Button */
.elegant-ghost-button {
    text-align: center;  /* Centers the button text */
    color: #ffffff;  /* Sets text color */
    background: #1b1f25;  /* Matches button background with body background for the 'ghost' effect */
    border: 1px solid #ffffff;  /* Sets a thin white border around the button */
    font-size: 18px;
    padding: 12px 12px;
    display: inline-block;  /* Enables the button to align better with other elements */
    text-decoration: none;  /* Removes the default underline of the anchor text */
    font-family: "Maven Pro", sans-serif;
    min-width: 120px;  /* Ensures a sufficient clickable area */
    transition: background 0.3s ease-in-out, color 0.3s ease-in-out;  /* Adds a smooth color transition on hover */
}

/* Changes color and background on hover to provide dynamic feedback */
.elegant-ghost-button:hover, .elegant-ghost-button:active {
  color: #1b1f25;
  background: #ffffff;
}

Initially, the body background color is set to #1b1f25, a dark hue that will contrast effectively with our ghost button.

Then we move to the .elegant-ghost-button class to define our button’s look and behavior:

  • text-align: center – This property is used to horizontally align the text within the button, aiding in visual balance.
  • color and background – The color property is set to #ffffff, which results in white text. The background is the same color as the body’s background. This helps create the ‘ghost’ effect, where the button appears to blend with the background.
  • border: 1px solid #ffffff – This property outlines the button with a thin white border, further defining the ghost button effect.
  • font-size and font-family – These properties specify the text’s size (18px) and font (“Maven Pro”, sans-serif) for an easy-to-read and attractive button label.
  • padding: 12px 24px – The padding property provides space around the text and also defines the button’s dimensions.
  • display: inline-block – This property ensures the button aligns properly with other inline elements.
  • text-decoration: none – This property is used to remove the default underline that usually accompanies anchor text.
  • transition – This property smoothens the color change over a 0.3 seconds duration when the button is hovered over or clicked. The effect is engaging, as the background color turns white and the text color darkens to #1b1f1f.

In addition to the static properties of the button, the hover effect is crucial to its interactivity. The .elegant-ghost-button:hover, .elegant-ghost-button:active selectors are used to switch the background and text color when the user interacts with the button, providing clear feedback that the button is clickable.

In a more practical scenario, these properties and their values might require adjustments to resonate with your website’s design theme and functional requirements. For instance, you may need to modify the button’s dimensions, colors, font properties, and transition duration to align with your site’s aesthetic. To improve the responsiveness across different devices, you might need to employ media queries to adjust padding and font size according to the viewport size. Lastly, for layouts using flexbox or grid, the management of the button’s size and positioning would need to be considered.

The Result

See the Pen
Ghost Button CSS #1
by 1stWebDesigner (@firstwebdesigner)
on CodePen.0

Final Thoughts

Ghost buttons introduce a minimalist and clean design to web pages, making them particularly useful in contexts where a simplistic, understated aesthetic is desired. However, due to their subtle nature, they may not stand out as prominently as other design elements. As such, using them as the primary CTA on your webpage might not be the most effective strategy.

They often shine when used for secondary or tertiary actions, where their understated elegance can enhance the overall design without drawing unnecessary attention. For instance, they can be used as navigational buttons, form submission buttons, or secondary action prompts that complement a primary, more conspicuous CTA.

Remember, successful design hinges on understanding and applying elements in their effective contexts. Ghost buttons, when used judiciously, can contribute to a visually pleasing and user-friendly interface.

Agile Git Branching Strategies in 2023

I have experience working on many projects, and I have found that the right choice for a branching strategy is essential for project success. In this article, I’ll describe different branching strategies. Nowadays, Git-Flow is very popular and well-documented. However, there are a few other alternatives like GitHub-Flow and the Trunk-based approach that exist, and some teams tend to move away from git-flow, and this article will describe why some other branching models may work better for your and your team.

Why Do We Need Git?

The reason why we have to use a (distributed) version control system like Git, and another, seems very obvious since it is used in almost every project, and having (D)VCS seems a standard nowadays. However, the question is why it is so. The answer is we are using version control because, as a team, we want to collaborate our effort to work on the same product and the same goal, and with the use of (distributed) version control systems like Git, we can integrate our individual contributions into a single product.

Unleashing the Power of Site Reliability Engineers

As IT operations and software development strategies change and coalesce, site reliability engineers (SREs) emerge as a pivotal piece of the DevOps puzzle. SREs are incredibly valuable because they bring crucial knowledge to their organization: a keen understanding of coding and a dedication to keeping systems running smoothly. 

The SRE role was born out of a desire to enhance software deployment and maintenance by empowering developers to contribute their expertise in a new way. Gone are the days when software development teams would pass the baton to the IT department — SREs are here to revolutionize the game. 

22 Common WordPress Errors and How to Fix Them

Common WordPress errorsWordPress is a powerful and secure platform, but that doesn’t mean your experience using it will always be smooth. On occasion, you might encounter common WordPress errors while working on your website. Although some of these are harmless, others can have significant consequences, and therefore require immediate attention.

How to Free Disk Space and Reduce Inode Usage in WordPress

Are you running out of disk space and inodes for your WordPress website?

If you run out of disk space and inodes, then you might see different errors. For example, you won’t be able to upload images, send or receive emails, update blog posts, and more. Your users will also have a hard time accessing your website.

In this article, we will show you how to reduce disk space and inodes on WordPress.

How to reduce disk space and inodes on WordPress

Why Free Up Disk Space and Reduce Inode Usage?

When you purchase WordPress hosting for your website, each service will provide a certain disk space and inode limit.

Inode is where the metadata for files is stored, like the file size and its physical location. Inode usage equals the number of files and folders on your hosting account.

Initially, you don’t have to worry about these limits, as you’ll be just starting out. However, as your WordPress site grows, more files and folders will take up disk space and utilize inodes. Once you reach your WordPress hosting company’s allotted limit, you’ll notice several issues on your site.

For instance, you won’t be able to send or receive emails from your website, have difficulty uploading images and other content to the media library, and update content on pages and posts.

If the disk space is full, then your visitors might also face problems while accessing your website. Besides that, migrating your site to another host might also not work if you don’t have enough disk space.

Reducing disk space and inodes will help resolve these issues. Plus, you will see better website performance and a smooth user experience.

With that, let’s see how you can check disk space usage on your WordPress site.

How to Check Disk Space in WordPress

There are multiple ways you can check the disk space in WordPress. The easiest way is by accessing the cPanel of your hosting service.

All web hosting providers offer statistics on disk usage, file usage, number of email accounts, and more.

For example, if you’re using Bluehost, then you can simply log in to your account. After that, head to the ‘Advanced’ tab from the menu on your left. The column on the right side will show statistics about disk and file usage.

View disk usage in Bluehost

That said, let’s look at ways to increase disk space and free up inodes in WordPress. You can click the links below to jump ahead to your preferred section.

1. Use Image Optimization Tools to Reduce Their Size

A simple way to save disk space is by optimizing your images. You can use different tools to reduce the image size without lowering its quality. Besides that, you can change the file format (PNG, JPEG, GIF) and dimensions to reduce the image size by 80%.

It not only helps save inode usage but also makes your website load faster. You also get faster website backups and improved SEO rankings.

Image optimization tools use compression technology to lower the file size of the picture. You can use photo editing software like Adobe Photoshop, Affinity, or web tools such as TinyPNG or JPEGmini.

Optimized vs Unoptimized Images in WordPress

There are also different WordPress plugins that automatically compress images when you upload them.

For more details, please see our guide on how to optimize images for web performance without losing quality.

2. Prevent WordPress from Generating Image Sizes

Did you know WordPress creates multiple copies of an image when you upload it to your website?

WordPress automatically generates different image sizes, which include thumbnail, medium, and large sizes in addition to the original picture.

WordPress Automatically Creates Copies of Your Images in Different Sizes

These image sizes will take up disk space and inodes on your website. Besides, the backup size of your site will also become large due to different versions of a single image.

A simple way to prevent WordPress from generating multiple image sizes is using the Stop Generating Unnecessary Thumbnails plugin. It is a free plugin that lets you disable image sizes.

You can learn more by following our guide on how to prevent WordPress from generating image sizes.

3. Don’t Upload Videos to WordPress

Another way you can reduce disk space, and inodes is by ensuring that you don’t upload videos to WordPress.

Directly uploading videos to your site means using more bandwidth and disk space. If you have high-quality videos, then it will utilize even more resources. You will also need different plugins to manage and display videos, which means using more disk space.

A better alternative is to upload videos to sites like YouTube or Vimeo and then embed them on your site. This way, you’ll free up disk space and bandwidth. Your videos will also get more exposure since YouTube is the second most popular search engine and the most visited site.

You can follow our guide on how to easily embed videos in WordPress blog posts for more details.

4. Clean Your WordPress Media Library

Cleaning your WordPress media library is a great way of incresting disk space and reducing inodes in WordPress.

If you have media files that are not in use, have multiple copies of the same image, or have pictures in the incorrect size, then you can remove them to free up space.

Usually, you can head to Media » Library from the WordPress dashboard and select an image you want to remove. Once the image attachment details open, simply click the ‘Delete permanently’ option.

Delete images from library

However, the manual process is time-consuming, and it can be hard to find media files that are not in use.

A more efficient way is to use WordPress plugins that help clean the WordPress media library. For example, Media Cleaner is a free plugin that scans your site for unused media files in the library and posts/pages. You can then decide which files to keep and which to remove.

For more details, please see our guide on how to clean up your WordPress media library.

5. Remove Inactive WordPress Plugins and Themes

Do you have WordPress plugins and themes that are inactive and currently not in use?

Having inactive WordPress themes and plugins means they are using inodes and taking up disk space. You should remove these plugins and themes to increase disk space and reduce inode usage.

To remove plugins, simply head to Plugins » Installed Plugins from your WordPress admin panel. Next, click the ‘Delete’ button for any plugin that is not being used.

Delete inactive plugins

Similarly, you can also delete inactive WordPress themes.

First, you will need to go to Appearance » Themes from your WordPress dashboard.

Delete inactive themes

From here, click on the theme you want to remove.

A new popup window will open with the details of your WordPress theme. Go ahead and click the ‘Delete’ button at the bottom right corner.

Delete a theme

6. Delete Draft Blog Posts and Pages

Just like inactive themes and plugins, removing draft blog posts and pages can also free up disk space and reduce inodes in WordPress.

They would take up unnecessary space, and you can improve website performance by deleting them.

Simply go to Posts » All Posts from your WordPress admin area. Next, click the ‘Trash’ button under any draft blog post.

Trash draft blog post

You can do the same for draft pages on your website.

WordPress also allows you to bulk delete posts and pages. For more details, please see our guide on how to bulk delete WordPress posts.

7. Empty Your Mailbox and Delete Unused Email Accounts

If you’re using email accounts on your hosting service, then they also take up space and utilize inodes on your site.

To reduce inode usage and save disk space, you can check your emails and delete any unwanted emails. These can be spam emails or old emails that are not required anymore.

Similarly, if you have multiple email accounts set up on your WordPress hosting service, then you can delete accounts for inactive users. You can access your mailbox and different email accounts using the cPanel of your hosting provider.

8. Clear Cache and Old Backup Files in WordPress

Cache plugins are super useful in speeding up your WordPress website and providing a better user experience.

However, these plugins can generate a high amount of cache files if left unchecked. As a result, they will utilize inodes on WordPress. That’s why it is a best practice to clear the WordPress cache at regular intervals and reduce inode usage.

Different WordPress hosting services and caching plugins come with a built-in option to clear the cache.

For example, Bluehost allows clearing your cache from the WordPress admin area. Simply select the ‘Caching’ option in the toolbar at the top and click the ‘Purge All’ option to remove the cache.

Clear Bluehost cache

Similarly, if you’re using WordPress security and backup plugins, then clearing old security reports and backups will also significantly improve your inode usage and disk space issues.

For instance, if you’re using Duplicator for backups, then you can view existing backups and delete the old ones from your WordPress dashboard.

Simply go to the Duplicator Pro » Packages page and select your old backup. After that, click the Bulk Action dropdown menu and select Delete.

Delete existing backups in WordPress

You can get started with the free version of Duplicator, and we highly recommend checking out the Pro features, too.

We hope this article helped you learn how to free up disk space and reduce inode usage on WordPress. You may also want to see our guide on WordPress security and tips to speed up WordPress performance.

If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.

The post How to Free Disk Space and Reduce Inode Usage in WordPress first appeared on WPBeginner.