I'm not a squid expert but I managed to piece this together...

Here's my modifications to the default config:

# diff -Nau squid.conf.default squid.conf
--- squid.conf.default  2017-06-20 03:28:44.000000000 -0500
+++ squid.conf  2017-07-27 16:18:12.003697590 -0500
@@ -62,7 +62,7 @@
 http_port 3128

 # Uncomment and adjust the following to add a disk cache directory.
-#cache_dir ufs /var/spool/squid 100 16 256
+cache_dir ufs /var/spool/squid 1000 16 256

 # Leave coredumps in the first cache dir
 coredump_dir /var/spool/squid
@@ -73,4 +73,16 @@
 refresh_pattern ^ftp:          1440    20%     10080
 refresh_pattern ^gopher:       1440    0%      1440
 refresh_pattern -i (/cgi-bin/|\?) 0    0%      0
-refresh_pattern .              0       20%     4320
+#refresh_pattern .             0       20%     4320
+refresh_pattern .              129600  33%     525600
+
+store_id_program /usr/local/bin/store_id_program
+store_id_children 5 startup=1
+
+# have not seen a larger RPM yet
+maximum_object_size 1 GB
+
+# cache RPMs only
+acl rpm_only urlpath_regex \.[d]?rpm
+cache allow rpm_only
+cache deny all

---end---

I hopefully got the regex correct for delta RPMs...

Then in dnf.conf on each computer add:

proxy=http://<host>:3128

If you're using the standard FedoraWorkstation firewall zone I don't think you need to open any additional ports (everything over 1024 is not blocked).

The only downside is that if you can't get to your squid server dnf will complain, it doesn't fail-over nicely.

Thanks,
Richard