ipfs / ipfs/ipfs-companion

Automatic mirroring of HTTP websites to IPFS as you browse them

Open
#535 11 comments 2 reactions 0 assignees View on GitHub
help wanted kind/discussion kind/enhancement status/deferred
Dominant language
JavaScript
Stars
2.2k
Forks
338
Avg merge
3m
Merged PRs (30d)
1

Description

By design IPFS provides excellent caching and accelerating mechanism. It would be nice to use IPFS as HTTP accelerator. Obviously, it might be used for static files only.

My proposal is as follows:

1. Create secure hash storing website "IPFS2HTTP". It would store URL, IPFS hash, expiration time.
1.1 Have api to get URL and return IPFS hash, expiration time
1.2 Have "workers" to retrieve unknown or expired URLs, add it to IPFS and keep hash in internal db.
2. Add to ipfs-companion option to enable "http2ipfs" translation, in following way:
2.1 For each never-seen-before URL do this (with 5s timeout):
2.1.1 Go to the "IPFS2HTTP" site, pass the URL, see if it has hash for the URL. Get the hash, fetch it over IPFS, return to user. Fall back to HTTP if no such hash.
2.2. If URL already seen - check its time to live (as received from IPFS2HTTP site) and use IPFS hash if possible. Otherwise retrieve new hash as in 2.1.1

Initially we might use the acceleration for obviously static files, such as .iso, .mp3, images...

I volunteer to do the part 1. Can you help with 2?
What do you think?

Contributor guide

Open the contributing guide

Research direction

The issue names no files, tests, or entry points. Start by reviewing the proposed IPFS2HTTP service and ipfs-companion HTTP-to-IPFS flow, then establish a concrete scope and acceptance criteria before implementation; done would require an agreed design for static-file detection, lookup, expiration, fallback, and browser-extension integration.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
web-dev
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.